Chrome不会删除Cookie?

时间:2013-06-02 14:30:05

标签: php google-chrome session cookies unset

我有一个注销用户的脚本(logout.php),它在FF和IE中运行得非常好,但在Chrome中,即使浏览器关闭后cookie仍然可用。

我已用这段代码测试过:

logout.php

session_start();
$_SESSION['un'] = '';
$_SESSION['pw'] = '';
unset($_SESSION['un']);
unset($_SESSION['pw']);
setcookie("spf", "", time()-3600);
session_destroy();
echo "Cookie: ".$_COOKIE['spf']."<br />";
echo "Session: ".$_SESSION['un'];

在Chrome中,尽管如此,它仍会以spf的内容回响。我做错了什么?

修改

在FF中,我的测试页面回应了这一点:

Cookie: 

Session:

(例如空白)。

在Chrome中,它说:

Cookie: {\"un\":\"test3333\",\"pw\":\"593c114983263124656dd6bb922b7bd8\"}

Session:

(例如,cookie包含内容,会话为空白)。

2 个答案:

答案 0 :(得分:0)

您可以尝试:

$_SESSION=array(); // assign an empty array to the session

OR

session_unset();     // unset $_SESSION variable for the run-time, frees all session variables currently registered.  

INFO

然后:

session_destroy();   // destroy session data in storage

注意: session_destroy()销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()。

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

来自: INFO

更新:

然后我认为你需要这个,请注意spf是cookie的名称

setcookie ("spf", "", time() - 3600);

如果是数组,则将名称更改为spf [one] ex:

setcookie ("spf[un]", "", time() - 3600);

看看HERE

答案 1 :(得分:0)

设置一个过去的日期,它可以解决问题,也不要忘记添加路径,以便删除好的路径。

setcookie('your_cookie','',time() - 3600,'/');