标头位置不能在实时服务器上运行,但适用于localhost

时间:2013-04-08 16:09:57

标签: php header location

我有这个代码,如果用户设置了dropdownmenu的值,它会将用户重定位到index.php 在一个不相关的页面设置它,请检查我的代码。

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'];
    }

它在我的本地服务器上工作正常,但在实时服务器上却没有?

2 个答案:

答案 0 :(得分:2)

在php脚本的最开头添加ob_start();。如果它包含另一个文件,则最后不要使用?>。感谢

答案 1 :(得分: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>';
    }
}

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