PHP – 为什么我不能摆脱这个会话id cookie?

我正在尝试排除Web应用程序的注销功能.当您登录时,应用程序会为其域设置几个Cookie.以下是当前的注销过程:

>您单击一个链接,将其发送到注销页面
>注销页面运行一个调用session_destroy()的函数,并循环遍历域的所有cookie,并将其设置为过期(见下面的代码)
>然后注销页面重定向到一个登录页面,这是一个直接的HTML.

在此过程结束时,所有其他Cookie未设置,但PHPSESSID Cookie仍然存在,具有相同的值,并且仍设置为在会话结束时到期.

我在这里缺少什么?

以上是我上面提到的注销功能

function log_out_current_user() {

        // Destroy the session
        if (isset($_SESSION)) {
            session_destroy();
        }

        // Expire all of the user's cookies for this domain:
        // give them a blank value and set them to expire
        // in the past
        if (isset($_SERVER['HTTP_COOKIE'])) {
            $cookies = explode(';',$_SERVER['HTTP_COOKIE']);
            foreach($cookies as $cookie) {
                $parts = explode('=',$cookie);
                $name = trim($parts[0]);
                setcookie($name,'',time()-1000);
                setcookie($name,time()-1000,'/');
            }
            // Explicitly unset this cookie - shouldn't be redundant,// but it doesn't hurt to try
            setcookie('PHPSESSID',time()-1000);
        }

    }
您没有使用与创建的参数相同的参数来删除它.使用 session_get_cookie_params获得那些.为了便于携带,您应该通过 session_name获取cookie的名称.这是一个小脚本:
$params = session_get_cookie_params();
setcookie(session_name(),$params['path'],$params['domain'],$params['secure'],isset($params['httponly']));

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...