如何在PHP中取消设置cookie?
我需要弄清楚如何取消设置这个cookie。到目前为止,我所尝试的一切都失败了 这就是我目前如何使它不安,它似乎不起作用如何在PHP中取消设置cookie?,php,session,cookies,session-cookies,Php,Session,Cookies,Session Cookies,我需要弄清楚如何取消设置这个cookie。到目前为止,我所尝试的一切都失败了 这就是我目前如何使它不安,它似乎不起作用 setcookie("user_id", $user_id, time() - 7200); 我是这样设置的: setcookie("user_id", $user_id, time() + 7200); 我有一个名为set\u session\u from\u cookie()的函数,它检查cookie是否已设置,如果已设置,它将使用cookie启动新会话 functio
setcookie("user_id", $user_id, time() - 7200);
我是这样设置的:
setcookie("user_id", $user_id, time() + 7200);
我有一个名为set\u session\u from\u cookie()
的函数,它检查cookie是否已设置,如果已设置,它将使用cookie启动新会话
function set_session_from_cookie()
{
if (isset($_SESSION['user_id'])) {
echo '';
} else {
$_SESSION['user_id']=$_COOKIE['user_id'];
}
}
问题是,当我在我的页面上使用这个时,我无法注销。我想这是因为我无法取消会话
我使用此函数的原因是,如果用户希望在结束会话后被记住,他们可以通过调用cookie重新启动会话
function set_session_from_cookie()
{
if (isset($_SESSION['user_id'])) {
echo '';
} else {
$_SESSION['user_id']=$_COOKIE['user_id'];
}
}
注销:
<?php
require'core.php';
session_destroy();
setcookie("user_id", "", time() - 7200);
header('Location:/social_learning/site_pages/starter-template.php');
在不使用我创建的函数的情况下,如何使用保存的cookie重新启动会话?因为该函数似乎导致用户无法再注销。将cookie的过期日期设置为过去的时间(例如,一秒钟后)
setcookie(“yourCookie”、“yourValue”,1)代码>
这将导致cookie过期
使用1
而不是0
,因为0
将cookie设置为在会话结束时过期。查看php手册以获取有关setcookie的信息
这些注释应解释该过程:
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
必须使用设置的参数删除Cookie
具有如果value参数为空字符串或FALSE,则
其他参数与之前对setcookie的调用相匹配,然后是cookie
将从远程客户端中删除具有指定名称的。这
通过将值设置为“已删除”和过期,在内部实现
时间到了过去的一年
因为设置值为FALSE的cookie将尝试删除
cookie,则不应使用布尔值。相反,使用0表示FALSE
1为真
您的代码没有多少安全问题,但是要回答您的问题,要在php中取消设置cookie,只需将过期时间设置为过去的时间:
setcookie("user_id", "", time()-10, "/");
setcookie("key","",time()-3600);
“loginform.php”不是有效的域,这可能是这里的问题。在php手册中,您可以通过设置过期日期来删除cookie:
setcookie("user_id", "", time()-10, "/");
setcookie("key","",time()-3600);
在某些情况下,您应该为参数提供路径和域
事实上,如果您使用空字符串分配cookie,它也将被取消设置:
setcookie("key","");
这个问题的解决方案是,我需要设置正确的路径来取消设置cookie,因为我是从最初设置cookie的另一个文件中取消设置cookie的
通过在浏览器cookies中查找cookie,我找到了unset需要使用的路径。一旦在浏览器中找到cookie,路径就列在cookie附近。然后我将cookie的路径设置为:
setcookie("user_id", $user_id, time() - 1, "/social_learning/site_pages");
最后一个参数是路径。它成功了
我原来的setcookie
如下所示:
setcookie("user_id", $user_id, time() + 7200, "");
使用此代码
setcookie("CookieName", "", time()-(60*60*24), "/");
每次在每个网站上对我都有效你的cookie应该是站点范围的吗?应该是吗?我怎么知道呢?不要用相对时间来表示不稳定的饼干。这使得不稳定取决于用户的时钟是否准确。使用时间1
,这将捕获所有人,但那些认为是1970年的时钟确实坏了的人除外。如何将时间设置为1?这不安全。cookie可以很容易地编辑,在这种情况下,可以通过编辑cookie以任何用户的身份登录。您应该对cookie使用某种加密。我如何在本地主机上设置域?只需像示例“/”中的斜杠一样放一个斜杠,就是这样,这意味着此cookie可用于您的所有域。1是否被视为过去的时间?@arboles时间以UNIX时间戳的形式给出,所以是的,1是很久以前的:)1是“1月1日,19:70 00:01 AM”,更准确地说,它是“1月1日,19:70 00:01 AM UTC”。-)如果cookie的域不是默认域,那么您也必须将该域作为setcookie函数的第四个参数传递,因为一般来说,总是设置第三个(路径)和第四个(域)参数是好的。我知道,我目前正在使用此方法,但它不起作用。我目前正在使用相同的参数删除,就像我要设置的那样。它不起作用了,是的。这意味着将时间从当前时间设置为“昨天”。这就是答案。我喜欢一个更受欢迎的答案没有考虑到你设置了一个否定的时间,它没有被取消。这个答案更适合这个问题。谢谢