2013-04-08 130 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>'; 
    } 
} 

在最后一种情况下,它肯定会重定向。

相关问题