2

我正在使用以下 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
4

9 回答 9

21

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

于 2012-10-10T11:56:58.873 回答
8

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

<?php
    ob_start();
    /*
    Your code
    */
 ?>
于 2012-10-10T11:24:25.137 回答
3

确保放一个出口;或者死; 在命令之后:并使“位置”以大写开头

if (!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') AND !isset($fb_login)) {           
    header("Location:login.php?msg=Please+Login+Again.");
    exit;
}
于 2012-10-10T11:06:22.940 回答
2

L资本。

 header("Location: login.php?msg=Please+Login+Again.");
 exit(); // just a precaution
于 2012-10-10T11:05:50.777 回答
1

尝试正确格式化标题:

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

当然,请确保您在调用之前没有发送任何输出(有意或错误地)。

于 2012-10-10T11:06:00.637 回答
1
header("Location: login.php?msg=Please+Login+Again.");
exit();
于 2012-10-10T11:06:13.407 回答
0

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

2)将“位置”设置为“位置:”

于 2012-10-10T11:06:20.467 回答
0

添加到其他人所说的内容中,您确定满足条件以击中 header()

您可以使用 empty() 清理代码并进行一些测试:

//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."));
}
于 2012-10-10T11:26:57.337 回答
0

尝试更改ANDfor&&

if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') && !isset($fb_login)
    ) {
        header("location:login.php?msg=Please+Login+Again.");
    }
于 2012-10-10T11:27:34.863 回答