Header()不重定向PHP

时间:2012-10-10 11:04:19

标签: php redirect http-headers

我正在使用以下PHP代码来检查会话。但如果会话未登录,则页面不重定向只显示黑页。

我的条件是对的!它正在击中标题功能.. 这是我的代码:

if(
    !isset($_SESSION['SESS_MEMBER_ID']) 
    || (trim($_SESSION['SESS_MEMBER_ID']) == '') 
    AND !isset($fb_login)
) {
    header("location:login.php?msg=Please+Login+Again.");
}

建议欢迎!

HTTP/1.1 200 OK
Date: Wed, 10 Oct 2012 10:57:14 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

9 个答案:

答案 0 :(得分:16)

如果您在输出内容后使用header("Location: ");,请确保先前在脚本中放置了ob_start();ob_start();缓冲您的脚本,因此在您调用ob_end();或到达文件末尾之前不会输出任何内容。在内容输出到浏览器后调用header("Location: ");可能会导致问题。

答案 1 :(得分:6)

ob_start(); 放在PHP文件的开头,会有所帮助,

<?php
    ob_start();
    /*
    Your code
    */
 ?>

答案 2 :(得分:3)

确保退出;或者死;在命令之后:并使“Location”以大写

开头
if (!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') AND !isset($fb_login)) {           
    header("Location:login.php?msg=Please+Login+Again.");
    exit;
}

答案 3 :(得分:2)

制作L首都。

 header("Location: login.php?msg=Please+Login+Again.");
 exit(); // just a precaution

答案 4 :(得分:1)

尝试正确格式化标题:

header("Location: login.php?msg=Please+Login+Again.");

当然,请确保您在通话前没有发送任何输出(无论是故意还是错误)。

答案 5 :(得分:1)

header("Location: login.php?msg=Please+Login+Again.");
exit();

答案 6 :(得分:0)

1)确保在header()函数之前没有发送任何内容

2)将“location”设为“Location:”

答案 7 :(得分:0)

添加其他人所说的内容,您确定满足条件以达到标题()

你可以使用empty()来清理你的代码&amp;做一些测试:

//Debug
unset($_SESSION['SESS_MEMBER_ID']);
unset($fb_login);

if(empty($_SESSION['SESS_MEMBER_ID']) && !isset($fb_login)) {
    exit(header("Location: login.php?msg=Please+Login+Again."));
}

答案 8 :(得分:0)

尝试更改AND

&&
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') && !isset($fb_login)
    ) {
        header("location:login.php?msg=Please+Login+Again.");
    }