2013-04-26 22 views
1

嘿傢伙我想在我的頭文件中構建一個重定向腳本。 它包含一個名爲$ redirect的變量,它或者等於0或1.如果當前的URL等於rediectURL什麼都不做

我想要做的是如果變量等於1將用戶重定向到指定頁面。 這是有效的。 我遇到的問題是當它到達重定向的URL時,它會創建一個循環。 我試着寫下面的代碼,但它不起作用。我做錯了什麼?

<?php 
$redirect = 1; 
$host = $_SERVER['HTTP_HOST']; 
$self = $_SERVER['PHP_SELF']; 
$query = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null; 
$url = !empty($query) ? "http://$host$self?$query" : "http://$host$self"; 

$redirectURL = '/protest/cispa.php'; 
if ($redirect === 1) { 
if ($url === $redirectURL) { 
die(); 
} 
else { 
header("Location: $redirectURL"); 
exit; 
}} 
?> 

正如andrewsi建議我更新了我的代碼以下爲它的工作原理:

<?php 
$redirect = 0; 
$host = $_SERVER['HTTP_HOST']; 
$self = $_SERVER['PHP_SELF']; 
$query = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null; 
$url = $self; 

$redirectURL = '/protest/cispa.php'; 
if ($redirect === 1) { 
if ($url === $redirectURL) { 
} 
else { 
header("Location: $redirectURL"); 
exit; 
} 
} 
?> 
+0

你'$重定向= 1'在頂部,那麼你檢查'$重定向=== 1'但絕不要改變它的選項。那是你的意思嗎?你也有'if($ url === $ redirectURL)',但是你把'$ url'設置爲'$ redirectURL'永遠不會設置的東西。這意味着兩個死代碼塊。 – Tigger 2013-04-26 23:30:32

+0

我通過編輯代碼手動更改它。 – VampireNews 2013-04-26 23:48:56

回答

0
$url = !empty($query) ? "http://$host$self?$query" : "http://$host$self"; 

$redirectURL = '/protest/cispa.php'; 

你的$ URL中包含一個完全合格的域名; redirectURL只是一個路徑。這兩者永遠不會平等。嘗試設置:

$url = $self; 

(如果我正確地讀你的代碼)

+0

將其更改爲您所說的和它的工作原理。謝謝。 – VampireNews 2013-04-26 23:46:47

+0

很高興幫助! – andrewsi 2013-04-27 00:32:12

0

您可以在您的重定向的查詢字符串中堅持的標誌。然後,如果該標誌存在,請不要添加重定向。

ex;現在

http://www.yoursite.com/redirectedto.php?red=1

,如果紅色的設置,我不會增加重定向。