如果这看起来类似于此处发布的其他问题,请耐心等待,我已经完成了所有提供的答案,但没有解决我的问题。我已将问题减少到最低限度。
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!";
?>
答案 0 :(得分:2)
session_id()
如果指定了 id ,它将替换当前的会话ID。 需要在session_start()之前调用session_id() 目的。根据会话处理程序,并非所有字符都是 在会话ID中允许。例如,文件会话处理程序 只允许a-z A-Z 0-9范围内的字符,(逗号)和 - (负)!
注意:使用会话Cookie时,为session_id()指定ID 调用session_start()时将始终发送新的cookie, 无论当前会话ID是否与当前会话ID相同 集。
您还可以检查您是否拥有基于Cookie的身份验证设置。
请注意,如果用户发布了网址,他们可能会将会话带到另一个客户端。
答案 1 :(得分:1)
在page2.php
上,交换前两行。改变
session_start();
session_id($_GET['PHPSESSID']);
到
session_id($_GET['PHPSESSID']);
session_start();
请参阅此处的Parameters
部分..http://php.net/manual/en/function.session-id.php