从请求强制会话ID

时间:2010-09-05 15:23:56

标签: php session request

有没有人想过为什么这不起作用?

    if(isset($_POST['PHPSESSID'])) {
session_id($_POST['PHPSESSID']);
session_start();
var_dump($_SESSION);
}

var_dump($ _ SESSION);永远是空的!它应该装满东西!是否有任何设置阻止强制会话ID?未启用自动启动。

3 个答案:

答案 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来创建会话而不是会话保存路径中的文件。