所以我试图取消设置一个cookie,如我的php书中所示,它解释了在注销页面中做了些什么
if (!isset($_COOKIE['Username'])){
require ('LoginFunctions.inc.php');
redirect_user();
} else {
unset($_COOKIE['Username']);
setcookie ('Username', '', time()-3600, '/', '', 0, 0);
require ('index.php');
redirect_user();
}
但是,这样做应该从主页(或任何页面)带我,登出我,然后返回主页。但事实并非如此。在主页上,当我单击注销链接时,页面只是“闪烁”(表示自动重定向页面的方向,就像它应该的那样),但不会将我注销。
这让我想到另一个问题。在这,我写了
if (!isset())
这意味着,如果没有设置,对吗?因此,为什么主页中的以下代码片段就像用户名已被设置为cookie一样工作。
if (!isset($_COOKIE['Username'])){
$q2 = "SELECT * FROM user";
因为代码读作“如果没有设置Cookie,那么......”然后它将其视为设置了cookie(从数据库中选择正确的用户和所有内容)。
答案 0 :(得分:0)
想到两个原因
http://php.net/manual/en/function.setcookie.php
必须使用与设置相同的参数删除Cookie。如果value参数为空字符串或FALSE,并且所有其他参数与先前对setcookie的调用匹配,则将从远程客户端删除具有指定名称的cookie。这是通过将值设置为“已删除”并将到期时间设置为过去一年来实现的。