[英]Session variables lost after header redirect
如果这看起来与此处发布的其他问题相似,请耐心等待,我已经完成了所有提供的答案,但尚未解决我的问题。 我已将问题减少到最低限度。
Page1.php
<?php
//start the session
session_start();
//set the session
$_SESSION['mysession'] = "Hello";
if(isset($_SESSION['mysession'])){
//redirect the person to page 2
session_write_close();
header("Location: page2.php?PHPSESSID=".session_id());
exit();
} else {
echo "Session Not Set";
}
?>
Page2.php
<?php
//start the session
session_start();
session_id($_GET['PHPSESSID']);
if ( isset ($_SESSION['mysession']) )
echo $_SESSION['mysession'];
else
echo "Session not set!";
?>
需要在session_start()之前调用session_id()
如果指定了id ,它将替换当前的会话ID。 为此,需要在session_start()之前调用session_id()。 根据会话处理程序的不同,会话ID内不允许所有字符。 例如,文件会话处理程序仅允许az AZ 0-9范围内的字符,(逗号)和-(减号)!
注意 :使用会话cookie时,为session_id()指定一个ID总是在调用session_start()时发送一个新的cookie,无论当前会话ID是否与所设置的ID相同。
您可能还会检查是否要设置基于Cookie的身份验证。
请注意,如果用户发布该URL,则他们可能会将会话带到另一个客户端。
在page2.php
,交换前两行。 更改
session_start();
session_id($_GET['PHPSESSID']);
至
session_id($_GET['PHPSESSID']);
session_start();
请参阅此处的“ Parameters
部分。.http://php.net/manual/zh/function.session-id.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.