2013-04-08 133 views
1

我有這個代碼將用戶重定位到index.php,如果他們設置一個dropdownmenu 的值在一個不相關的頁面上設置它請檢查我的代碼。標題位置不在工作服務器上工作,但在本地主機上工作

if(isset($_GET['d'])&&empty($_GET['d'])===false){ 
     $cur_page=$_SERVER['PHP_SELF']; 
     $current_page = substr($cur_page,1); 
     $possible_page = array('terms.php','contact.php','about.php'); 

     if(in_array($current_page,$possible_page)){ 
       header('Location:/index.php?d='.$_GET['d'].''); 
     exit(); 
    }else{ 
     echo $_GET['d']; 
    } 

它在我的本地服務器上正常工作,但在現場服務器上它沒有?

+1

您需要更好地解釋「不起作用」的含義。你的標題還需要一個空格,例如:''Location:/index.php?d ='' – Sammitch 2013-04-08 16:12:18

+0

如果標題已經發送,header()不起作用。一旦輸出到頁面,就會發生這種情況,甚至PHP標籤之前的空格或字節順序標記也會發生。 – adeneo 2013-04-08 16:14:12

+0

你剛試過'header('Location:index.php?d ='。$ _ GET ['d'])'? (沒有斜線) – jtheman 2013-04-08 16:14:26

回答

2

添加ob_start();在PHP腳本的開頭。如果它包含另一個文件,那麼最後不要使用?>。謝謝

+0

這應該是一個評論,然後,如果他說「不」,那麼你可以建議它作爲一個答案:) – Jonast92 2013-04-08 16:12:01

+0

感謝Jonast是這個社區的新手會學會慢慢地使用它:) – 2013-04-08 16:14:05

+0

@ jonast92它不應該是一個評論。它有能力成爲'ob_start()'對'header'產生影響的答案。誰在評論中寫回答,並詢問它是否有效,如果我將它作爲答案發布? – 2013-04-08 16:22:13

0

我總是使用這個小方法,並在所有情況下工作完美。

public static function Redirect($sec, $file) 
{ 
    if (!headers_sent()) 
    { 
     header("refresh: $sec;url=$file"); 
    } 
    elseif (headers_sent()) 
    { 
     echo '<noscript>'; 
     echo '<meta http-equiv="refresh" content="'.$sec.';url='.$file.'" />'; 
     echo '</noscript>'; 
    } 
    else 
    { 
     echo '<script type="text/javascript">'; 
     echo 'window.location.href="'.$file.'";'; 
     echo '</script>'; 
    } 
} 

在最後一種情況下,它肯定會重定向。

相關問題