【发布时间】:2014-02-12 05:23:45
【问题描述】:
我已经成功地在 IE 中破坏了我的 cookie 字符串,现在看起来像这样:
"; __atuvc=4%7C7; PHPSESSID=e4db10eb5d4409ba3203a7c1d533fafd; PHPSESSID=75a04bdcf604dd607d383da774c0f72a; __utmc=51433896; __utma=51433896.100703801.1392175783.1392175783.1392178863.2; __utmb=51433896.5.10.1392178863; __utmz=51433896.1392175783.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __atuvc=3%7C7"
这是在 IE11 开发者栏中输入document.cookie 的输出。
您会注意到PHPSESSID 出现了两次。我想杀了它。
我尝试在 JavaScript 中运行它:
document.cookie = 'PHPSESSID=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
并在 PHP 中运行:
session_start();
setcookie('PHPSESSID', '', time()-3600);
setcookie('PHPSESSID', '', time()-3600, '/');
session_unset();
session_destroy();
但似乎没有什么能摆脱 cookie。
我知道我可以通过浏览器手动删除 cookie,但是一大群用户现在都在搞乱会话,我需要一种方法来自动删除。
【问题讨论】:
-
如果 var_dump($_COOKIE) 你有什么?
-
var_dump($_COOKIE)只会输出一次PHPSESSID,因为它是一个键值字典。但它肯定存在两次,因为它会阻止用户登录。也可以通过$_SERVER['HTTP_COOKIE']看到。 -
到目前为止,我发现的唯一解决方案是要求用户关闭浏览器(将清除会话长度的 cookie)或按 Ctrl+Shift+Del 并手动删除它们。
标签: javascript php