【发布时间】:2015-01-01 18:36:34
【问题描述】:
所以我尝试了多种其他“解决方案”来解决我的问题(在本网站和其他网站上),但找不到适合我的解决方案。
我正在尝试设置一个 cookie 来登录我的用户,然后在注销时删除该 cookie。这是我的代码。
list ($check, $data) = check_login($dbc, $_POST['Username'], $_POST['Password']);
if ($check) {
setcookie('Username', $data['Username'], time() + 60*60*24*90);
header('Location: RedirectPage.php');
其中,检查用户名和密码是否已在登录表单上输入(并被接受),如果是,则使用从数据库中提取的用户名设置 cookie“用户名”,时间等于 90 天,并且用户然后被重定向。
这部分工作正常,它让用户按预期登录。
但是在删除部分,
header('Refresh: 0;');
setcookie('Username', '', time() - 60*60*24*90);
unset($_COOKIE['Username']);
require ('RedirectPage.php');
redirect_user();
我按预期以与设置相同的方式删除 cookie,删除所有数据并将时间设置为负值,然后我运行未设置的 cookie 以确保它已经消失。
但是,这不起作用。 setcookie(删除)不做任何事情,并且未设置的 cookie 仅在页面运行后(在本例中为 index.php)以及当我单击另一个页面或刷新它“忘记”的页面时才在页面上起作用cookie 已被删除。
现在进入 Chrome 检查元素来检查我得到的 cookie
Username, "Value" (the withdrawn username), r3gamers.com (domain), / (path), 2015-02-03T13:45:00 (Expires/MaxAge), 19 (Size) and HTTP and Secure are both set as empty.
点击退出按钮后观察过程,这个cookie永远不会被删除。唯一可以实际删除 cookie 的方法是用新的 cookie 覆盖它(再次登录)或通过检查元素删除它。
有什么想法吗?据我所知,我正在做应该做的一切。
编辑: 我还想提一下,在 localhost 上进行测试时,通过 netbeans 离线时,此功能确实有效。但是,当我为我的网站将页面上传到 godaddy 时,它们会停止正常工作。
【问题讨论】: