在 Firefox 中,会话变量在重定向后被保存并可检索,但在 Chrome 中,重定向后,它说它不存在。
重定向代码:
session_start();
$_SESSION[ "test" ] = "exists";
session_write_close();
header( "HTTP/1.1 301 Moved Permanently" ); //Removing this 301 line doesn't help
header( "Location: http://" . $_SERVER[ "HTTP_HOST" ] . "/" );
exit();
检索会话:
session_start();
if ( isset( $_SESSION[ "test" ] ) )
{
echo $_SESSION[ "test" ];
unset( $_SESSION[ "test" ] );
}
为什么这在 chrome 中不起作用?
编辑:我想我找到了答案,但这没有意义。
如果我删除该行unset( $_SESSION[ "test" ] )
,那么它会在重定向后保存会话!但为什么会出现这种情况?会话应该是服务器端的。我在“回声”声明之后取消了它!它怎么不会因为我在那之后取消设置变量而回显该值?!
有谁知道发生了什么?