我在网站上使用cookie作为记住我的功能。我的方法创建了许多cookie,其工作原理就像一个符咒,但是,之后我无法删除或更改这些值。
我通过以下方式创建它们:
private function setCookies($userInfo) {
setcookie("profileID",$userInfo["profileID"],time()+60*60*24*30);
setcookie("userLevel",$userInfo["levelID"],time()+60*60*24*30);
setcookie("username",$userInfo["username"],time()+60*60*24*30);
setcookie("fullname",$userInfo["fullname"],time()+60*60*24*30);
return true;
}
以及我的注销方法:
public function logout() {
session_destroy();
setcookie("profileID","",time()-60*60*24*30*12);
setcookie("userLevel","",time()-60*60*24*30*12);
setcookie("username","",time()-60*60*24*30*12);
setcookie("fullname","",time()-60*60*24*30*12);
return true;
}
这两种方法都是在控制器文件中调用的,然后再输出到浏览器(head-ect)。更糟糕的是,它甚至没有将上面列出的值更改为",而是保留原始值。
有什么想法吗?我没有处理过那么多cookie,所以这可能是一个简单的错误:)
请阅读php手册,了解如何使用session_delete。它谈到了饼干以及如何销毁它们。
http://php.net/manual/en/function.session-destroy.php
为了再次使用相同的cookie,您需要在这样做之前调用session_start()。您正在调用session_destroy(),然后尝试设置您的cookie。
更新为负时间或0时间的Cookie只有在浏览器重新启动时才会被删除,如果我没有弄错的话。Cookie过期是通过浏览器的清理方法管理的,该方法在浏览器关闭时运行。
在注销方法中的session_destroy()
之前使用session_unset()