有没有人想过为什么这不起作用?
if(isset($_POST['PHPSESSID'])) {
session_id($_POST['PHPSESSID']);
session_start();
var_dump($_SESSION);
}
var_dump($ _ SESSION);永远是空的!它应该装满东西!是否有任何设置阻止强制会话ID?未启用自动启动。
答案 0 :(得分:1)
您发布的代码是正确的。但是,由于以下几个原因之一,您可能无法在会话中看到变量:
$_POST['PHPSESSID']
未设置$_POST['PHPSESSID']
包含非数字字符$_POST['PHPSESSID']
未引用已填充的会话ID session_start()
之前,已拨打session_id
如果这些都不适用,我不知道问题是什么,但为什么不尝试使用session_name()
(专为你想要做的而设计)而不是{{1 }}?
答案 1 :(得分:0)
您的$_POST['PHPSESSID']
一定是错的:
根据会话处理程序,会话ID中不允许所有字符。例如,文件会话处理程序仅允许 a-z A-Z 0-9,(逗号)和 - (减号)
范围内的字符
检查其值。如果更改了会话处理程序,则必须仅使用此特定会话处理程序的允许字符。
资源:
答案 2 :(得分:-1)
会话保存路径存在问题。它设置不正确,所以我猜可以说PHP依赖于浏览器cookie来创建会话而不是会话保存路径中的文件。