过期的会话cookie似乎仍然存在

时间:2012-11-07 18:18:50

标签: php session-cookies

我正在尝试删除会话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而不是允许它默认吗?

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

1 个答案:

答案 0 :(得分:0)

您可能需要查看此页面:

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

  

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

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