<?php
session_start();
$_SESSION['logged_in'] = false;
setcookie("dsgpassword127", $password, time()-3600); /* expire the cookie */
setcookie("dsgemail127", $email, time()-3600); /* expire the cookie */
session_destroy();
header("location: index.php");
?>
上述代码在Chrome中运行良好,不会删除FireFox 14.0.1中的Cookie。我想知道为什么会这样,如果有人遇到过同样的问题,或者解决了这个难题,我就会在这些饼干到期时使用....
答案 0 :(得分:1)
根据manual for sesion_destroy():
session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。 ...如果使用cookie传播会话ID(默认行为),则必须删除会话cookie。 setcookie()可以用于此。
很难解释为什么Chrome会取消设置Cookie,但Chrome的行为看似异常,而不是Firefox。
但是存在一个指向死会话的旧cookie应该不会有问题。服务器应该创建一个新会话 - 使用空会话数据 - 并发回一个指向新会话的cookie。
事实上,在客户端保存未加密的用户和密码可能是不明智的。你确定需要吗?在服务器端存储该信息可能更常见,客户端只给出了会话cookie。
答案 1 :(得分:1)
我卸载了FireFox并重新安装了最新版本15.0。这次当FireFox要求我自动记住密码时,我要求它不要这样做。现在浏览器正常反应。我怀疑在14.0.1中关于“记住密码”功能的情况也是如此。
答案 2 :(得分:0)
将Cookie过期设置为1,如下所示:
setcookie("dsgpassword127", $password, 1); /* expire the cookie */
setcookie("dsgemail127", $email, 1); /* expire the cookie */
基本上第三个参数是自纪元以来的秒数。 1在纪元之后将其设置为1秒,因此无需担心time()
和所有问题。检查firefox是否有帮助。