cookie不会被删除

如何解决cookie不会被删除

| 我有一个基本的登录系统。基本的登录/注销功能如下:
function login() {
    global $page;

    if ($_COOKIE[\'adminUser\'] == adminUser && $_COOKIE[\'adminPass\'] == adminPass):
        $_SESSION[\'adminLogin\'] = true;
        redirect($_SERVER[\'REQUEST_URI\']);
    elseif ($_POST[\'adminUser\'] == adminUser && $_POST[\'adminPass\'] == adminPass):
        setcookie(\'adminUser\',$_POST[\'adminUser\'],time() + 60 * 60 * 24 * 7);
        setcookie(\'adminPass\',$_POST[\'adminPass\'],time() + 60 * 60 * 24 * 7);
        $_SESSION[\'adminLogin\'] = true;
        redirect($_SERVER[\'REQUEST_URI\']);
    else:
        $page->content->table = new template(\'admin/login.tpl\');
        // it shows the login form
    endif;
}

    function logout() {
        $_SESSION[\'adminLogin\'] = false;
        setcookie(\'adminUser\',false,time() - 60*100000);
        setcookie(\'adminPass\',time() - 60*100000);
        redirect(pathApp);
    }
redirect($x)
header(\"Location: $x\"); die;
。 整个脚本中的任何地方都没有设置其他COOKIES。 问题是注销功能不起作用。我尝试通过Firebug进行调试,以查看发送了哪些标头,并且一切似乎对我而言都是正常的。这是Firebug的注销日志:
Response Headers

HTTP/1.1 200 OK
Date: Fri,15 Apr 2011 18:48:57 GMT
Server: Apache
X-Powered-By: PHP/5.2.13
Expires: Thu,19 Nov 1981 08:52:00 GMT
Cache-Control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0
Pragma: no-cache
Set-Cookie: adminUser=deleted; expires=Thu,15-Apr-2010 18:48:56 GMT
adminPass=deleted; expires=Thu,15-Apr-2010 18:48:56 GMT
Content-Length: 1041
Connection: close
Content-Type: text/html


Request Headers

GET /freeads/admin/logout HTTP/1.1
Host: clienti.bsorin.ro
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://clienti.bsorin.ro/freeads/admin
Cookie: adminUser=q; adminPass=q; PHPSESSID=22faf6e20467b88d97dc7838572cbd47
该脚本位于http://clienti.bsorin.ro/freeads/admin。用户名和密码均设置为\'q \'。 谢谢!     

解决方法

似乎系统存在缺陷,因为我没有正确设置Cookie。我没有使用
path
参数。 Cookie的设置为
/path/login
,并已删除为
path/logout
。 正确的方法是将两个“ 7”命令对(登录和注销)都更改为:
setcookie(\'adminUser\',$_POST[\'adminUser\'],time() + 60 * 60 * 24 * 7,\'/\');
setcookie(\'adminPass\',$_POST[\'adminPass\'],\'/\');

setcookie(\'adminUser\',false,time() - 60*100000,\'/\');
注意第四个参数
path
被设置为
/
。花了我一段时间,但我想通了:)。     ,我注意到您正在使用子域。 setCookie具有第五个参数,它将指定域。子域删除cookie很难。这对我有用
setCookie(\"clockInTime\",$param,date(\'U\')+86502,\'/\',\'.mywebsite.com\')
最后一个参数将使用域之前的\。来选择mywebsite的所有子域。     ,在使用setcookie之前,请检查您是否未发送任何标头。 更改条件以使用花括号(求求你) 确保您设置了Cookie /将其删除在同一域(和路径)上,请尝试使用
setcookie($name,$val,$time,\'/\');
调用注销时,我会看到以下错误。   调试:   [class_dispatcher.php:26] [标量   [整数/浮点数/字符串/布尔值]   页面->内容不是类   \'模板\' 这很可能是原因-因为在调用setcookie之前已将其输出。     ,您可以使用setcookie()更改cookie的到期时间。 重要提示:在将任何数据发送到浏览器之前,必须更新cookie的到期时间,因为浏览器会识别cookie并根据从服务器发送到浏览器的标头存储它,因此您必须在标头之前使用setcookie()来更新cookie的到期时间     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?