每次执行session_start时,会话ID不同


Different session ID every time session_start is executed

我有以下源代码

session1.php

<?php
session_start();
echo session_id();
?>

session2.php

<?php
session_start();
echo session_id();
?>

当我访问session1.php然后访问session2.php时,我得到了不同的输出。

为什么会这样?

浏览器没有将会话cookie发送回服务器。这有两个原因。

  1. 设置浏览器不向服务器发送cookie。不能强制浏览器发送cookie。在这种情况下,您唯一的选择是在URL中传递会话标识符,尽管这通常不是一个好主意。
  2. 配置服务器不使用cookie作为会话标识符(通过会话方式)。use_cookies配置选项)。

尝试将会话cookie存储在数据库中而不是服务器上。这为我节省了大量的超时和其他会话cookie问题,特别是如果你在共享服务器上。

这可能有帮助:http://www.raditha.com/php/session.php.

好运

这是一个罕见的边缘情况,但是我发现在php.ini的会话名称中有一个点会导致这个问题!!

session.name = THIS.DOESNTWORK

如果您在*nix下运行,尝试将session.save_path设置为/tmp。如果这不起作用,请查看浏览器的cookie缓存,看看浏览器是否确实保存了该cookie。