2017-02-16 39 views
1

我不確定這是否可能,但想知道我們是否可以檢測到header('Location: ')發起的URL。PHP在Google App Engine中如何檢測傳入重定向的url?

我有幾個腳本header('Location: /main.php')現在當執行main.php我想知道重定向從哪個腳本或URL發起。

script.php 
header('Location: /main.php'); 

main.php 
//detect the source url.. ie /script.php or website.com/script.php 
// do some action 
header('location: /script.php'); 

這可能嗎?

回答

0

我想你可以在main.php上使用這樣的東西。

$referer = $_SERVER["HTTP_REFERER"]; 
+0

我會假設它應該在普通服務器上工作。但我不斷收到這個錯誤。 '注意:未定義索引:HTTP_REFERER' 這似乎很奇怪。我想知道在谷歌應用引擎中運行網站是否有不同。 –

+0

當HTTP_REFERER爲空時,通常會發生這種錯誤。您可以使用像if(isset($ var))或if($ var <> null)這樣的代碼,其中var是'$ _SERVER [「HTT_REFERER」] 「但我不確定這是否會在你的情況下仍然有效。 –

0

我得到了它,我用下面的代碼

script.php 
$document = $_SERVER['REQUEST_URI']; 
$host = $_SERVER['HTTP_HOST']; 
$fullPath = $host.$document; 
setcookie('referer', $fullPath,time()+86400); // cookie is destroyed on redirect 
header('Location: /main.php?referer='.$fullPath); 

,另一個工作是如下

main.php 
$referer = $_REQUEST['referer']; 
if($referer != null){ 
     header("location: http://".urldecode($referer)); 
    } 

我定當main.php被執行刪除了該Cookie,因此我必須通過POST發送信息。 另外我不得不在$ referrer上使用urldecode。

這可能不是最好的方法來做到這一點,但它的工作原理,如果任何人可以改善這一點,我會很樂意從中學習。

相關問題