首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么php每次在测试环境(WAMP)中都生成相同的会话is?

问为什么php每次在测试环境(WAMP)中都生成相同的会话is?
EN

Stack Overflow用户
提问于 2011-05-21 02:33:46
回答 7查看 13.5K关注 0票数 4

我已经在我的系统中配置了wamp,并且正在这个本地环境中进行开发和测试。我正在开发注销功能,并且碰巧注意到在浏览器中生成的会话ids是相同的。

Eg chrome始终为所有用户生成会话id = abc,即使在注销和登录之后也是如此;IE始终为所有用户生成会话id = xyz。

这是wamp/我的测试环境的问题吗?

请在我的注销php脚本下面找到-

代码语言:javascript
复制
<?php
session_start();
$sessionid = session_id();
echo $sessionid;
session_unset(); 
session_destroy(); 
?>
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-05-21 02:42:19

您可能仍然有包含旧会话ID的cookie,因为session_unset和session_destroy都不会删除该cookie:

为了完全终止会话,例如注销用户,还必须取消设置会话id。如果使用cookie传播会话id (默认行为),则必须删除该会话cookie。setcookie()可以用来实现这个目的。

因此,在注销后使用setcookie使会话ID cookie无效:

代码语言:javascript
复制
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

另一个建议是在使用session_regenerate_id(true)成功进行身份验证后重新生成会话ID。

票数 7
EN

Stack Overflow用户

发布于 2012-11-29 16:54:11

都会起作用的。请试试这个

代码语言:javascript
复制
session_start(); 
session_regenerate_id(TRUE); 
session_destroy(); 
票数 4
EN

Stack Overflow用户

发布于 2011-05-21 02:35:42

您必须使用函数session_regenerate_id()重新生成会话id。否则,两次页面刷新的会话ID将是相同的。

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

https://stackoverflow.com/questions/6076214

复制
相关文章

相似问题

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