session_regenerate_id正在执行... double?

时间:2014-03-26 15:31:02

标签: php xampp sessionid

我有一个奇怪的问题让我发疯... 我正在编写自己的MVC框架,我正在使用mysql进行会话管理,当我注意到session_regenerate_id函数有时会从无处生成新的会话时...... 经过几个小时尝试猜测到底是什么问题,我最终绕过了我的所有代码并使用这个简单的PHP脚本运行白页:

<?php
if(!isset($_SESSION)){
session_start();
$_SESSION['user']='kikko68';
$_SESSION['name']='cristian';
$_SESSION['mail']='cri89@kij.com';
}
$old=session_id();
session_regenerate_id(true);
$new=session_id();
echo"OLD = ".$old."<br>NEW = ".$new;
?>

我已在网络服务器上测试了此剧本,结果如下:

---------------load page---------------------
OLD = ffa4e90763d61a2f733364fddb86bbf4
NEW = 7293a7268c77406075c78a38bc148c34
---------------refresh-----------------------
OLD = 7293a7268c77406075c78a38bc148c34
NEW = d21e6da87635fb2934b286679850c830
---------------refresh-----------------------
OLD = d21e6da87635fb2934b286679850c830
NEW = 9686e91f66565358bceaa4bac8d8a563

正如您在每次刷新时都可以看到的那样,NEW id成为旧ID。

在我的本地安装(XAMPP)上,事情似乎有任何意义......

---------------load page---------------------
OLD = c1vgleb55j0tpeu21mr3l1rip5
NEW = dn2hfst79nuqtcegi91qikrv34
---------------refresh-----------------------
OLD = th1tk5dmaovdlrdka4frf07is0
NEW = s7a990magimfccc0qtnl66rfp0
---------------refresh-----------------------
OLD = hkpadq4pjtbtcmap3m3322al21
NEW = q17lh3asev8rkv3ld1f4mu2tk0

有人可以解释为什么会这样吗? 感谢。

1 个答案:

答案 0 :(得分:0)

服务器结果对我有意义,而XAMPP结果则没有。看起来在XAMPP环境中,旧会话永远不会被识别。因此,session_start()会创建一个带有新ID(ID更改为#1)的全新ID,然后您的session_regenerate_id()调用会创建一个新的ID(ID更改为#2)。

要测试,请在session_start()之后立即捕获会话ID。问题应该变成,而不是“为什么我的脚本中会生成两个ID?”但“为什么我的脚本没有在session_start()上找到并加载有效的会话?”