2

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

我已经用这段代码进行了测试:

注销.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 有内容并且会话是空白的)。

4

2 回答 2

0

设置一个过去的日期,它会成功,也不要忘记添加一个路径,以便删除好的路径。

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

于 2014-04-27T17:56:21.523 回答
0

你可以试试:

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

或者

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

信息

接着 :

session_destroy();   // destroy session data in storage

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

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

取自: 信息

更新:

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

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

如果它是一个数组,则将名称更改为 spf[one] 例如:

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

看看这里

于 2013-06-02T15:06:07.423 回答