我正在使用以下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
答案 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.");
}