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

aru*_*air 3 php wamp unique sessionid logout

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

例如 - 即使在注销并登录后,chrome也会为所有用户生成会话ID = abc; IE总是为所有用户生成session id = xyz.

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

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

<?php
session_start();
$sessionid = session_id();
echo $sessionid;
session_unset(); 
session_destroy(); 
?>
Run Code Online (Sandbox Code Playgroud)

Gum*_*mbo 7

您可能仍然拥有包含旧会话ID的cookie,因为它们既不删除session_unset也不session_destroy删除该cookie:

为了完全终止会话,比如要将用户注销,还必须取消设置会话ID.如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie.setcookie()可以用于此.

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

if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}
Run Code Online (Sandbox Code Playgroud)

另一个建议是使用后成功验证后重新生成会话ID session_regenerate_id(true).