0

我正在尝试删除会话 cookie。这些是我正在遵循的步骤

        // Find the session - I believe this is doing a resume rather than starting a fresh session thus identifying the session.
        session_start();

        // Unset all the session variables enmasse by assigning an empty array
        $_SESSION = array();

        // find the session name that has been allocated then destroy the session cookie
        if(isset($_COOKIE[session_name()])){
            setcookie(session_name(),'', time()-42000, '/');
           // set content of found session to null, with a past time, at the root
        }

        // Destroy the session 
        session_destroy();

这肯定会让我退出。然而,实际的 cookie 仍然存在并且可以在浏览器 (firefox) 中查看。

$_COOKIE[session_name()]

似乎返回的是加密的内容字符串,而不是会话名称。

问题:

如果 $_COOKIE[session_name()] 不是获取会话名称的正确方法是什么?

我应该设置一个 session_name 而不是让它默认吗?

我看到会话是因为它正在等待某种垃圾收集吗?

4

1 回答 1

0

你可能想看看这个页面:

http://php.net/manual/en/function.session-destroy.php

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

基于此,您可能希望使用session_id()而不是session_name()

于 2012-11-07T18:25:37.620 回答