首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >session_regenerate_id执行..。双倍?

session_regenerate_id执行..。双倍?
EN

Stack Overflow用户
提问于 2014-03-26 15:31:02
回答 1查看 126关注 0票数 0

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

代码语言:javascript
复制
<?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;
?>

我已经在一个web服务器上测试了这个脚本,结果是:

代码语言:javascript
复制
---------------load page---------------------
OLD = ffa4e90763d61a2f733364fddb86bbf4
NEW = 7293a7268c77406075c78a38bc148c34
---------------refresh-----------------------
OLD = 7293a7268c77406075c78a38bc148c34
NEW = d21e6da87635fb2934b286679850c830
---------------refresh-----------------------
OLD = d21e6da87635fb2934b286679850c830
NEW = 9686e91f66565358bceaa4bac8d8a563

正如您在每次刷新时看到的那样,新id变成了旧id。

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

代码语言:javascript
复制
---------------load page---------------------
OLD = c1vgleb55j0tpeu21mr3l1rip5
NEW = dn2hfst79nuqtcegi91qikrv34
---------------refresh-----------------------
OLD = th1tk5dmaovdlrdka4frf07is0
NEW = s7a990magimfccc0qtnl66rfp0
---------------refresh-----------------------
OLD = hkpadq4pjtbtcmap3m3322al21
NEW = q17lh3asev8rkv3ld1f4mu2tk0

有人能解释一下为什么会发生这种事吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-07 12:08:07

服务器结果对我来说是有意义的,而XAMPP结果则没有意义。在XAMPP环境中,旧会话似乎根本无法被识别。因此,session_start()使用一个新ID (即ID更改#1)创建一个全新的ID,然后您的session_regenerate_id()调用创建另一个新ID(即ID更改#2)。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22665820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档