我正在使用名为headerLocation()
的函数才能正确重定向。
这是该功能的相关部分,我正在使用它来重定向,然后显示适当的消息(个人偏好)。
function headerLocation($location,$message)
{
$_SESSION['output'] = $message;
header("Location: ". $location);
}
问题是,当我运行脚本时,header("Location: ". $location);
部分被激活,甚至没有调用该函数(当我最初需要它进行php解析时)。
这使得该功能无用。
有什么方法吗?
答案 0 :(得分:10)
除了已经给出的反馈。重定向后exit
是个好主意。
function headerLocation($location,$message)
{
$_SESSION['output'] = $message;
header("Location: ". $location);
exit;
}
答案 1 :(得分:3)
这不应该发生。您 在某处调用该函数,或者代码的另一部分正在写出标题。你能为这个函数添加一些调试来检查吗?
答案 2 :(得分:1)
重定向发生得太快,无法正确写入$ _Session。使用
session_write_close();
在标题调用之前。
编辑:在函数调用前删除了荒谬的$。
答案 3 :(得分:1)
只是一个猜测,也许你应该缓冲你的输出(ob_start()) 这将导致仅在刷新输出时发送标头,允许其余代码执行。
答案 4 :(得分:1)
header()
函数在没有先调用headerLocation()
的情况下重定向是没有意义的。
我的猜测是你没有看到$_SESSION['output']
抓住$message
,这让你觉得这个功能没有被执行。尝试写一个新文件,这有用吗?我打赌它会。
$_SESSION
可能没有保留您的值的原因可能是因为P3P以及您的浏览器和/或PHP配置。
<强> Also, are you sure you don't wanna call die()
/ exit()
after the header()
redirect? 强>