取消注销Cookie以便注销

时间:2014-10-29 00:34:30

标签: php cookies

所以我试图取消设置一个cookie,如我的php书中所示,它解释了在注销页面中做了些什么

           if (!isset($_COOKIE['Username'])){
            require ('LoginFunctions.inc.php');
            redirect_user();
        } else {
            unset($_COOKIE['Username']);
            setcookie ('Username', '', time()-3600, '/', '', 0, 0);
            require ('index.php');
            redirect_user();
        }

但是,这样做应该从主页(或任何页面)带我,登出我,然后返回主页。但事实并非如此。在主页上,当我单击注销链接时,页面只是“闪烁”(表示自动重定向页面的方向,就像它应该的那样),但不会将我注销。

这让我想到另一个问题。在这,我写了

if (!isset())

这意味着,如果没有设置,对吗?因此,为什么主页中的以下代码片段就像用户名已被设置为cookie一样工作。

if (!isset($_COOKIE['Username'])){
     $q2 = "SELECT * FROM user";

因为代码读作“如果没有设置Cookie,那么......”然后它将其视为设置了cookie(从数据库中选择正确的用户和所有内容)。

1 个答案:

答案 0 :(得分:0)

想到两个原因

  • 服务器和客户端之间的时差超过一小时
  • 或者Cookie的设置与您取消设置的方式不同

http://php.net/manual/en/function.setcookie.php

  

必须使用与设置相同的参数删除Cookie。如果value参数为空字符串或FALSE,并且所有其他参数与先前对setcookie的调用匹配,则将从远程客户端删除具有指定名称的cookie。这是通过将值设置为“已删除”并将到期时间设置为过去一年来实现的。