【发布时间】:2012-04-02 12:03:19
【问题描述】:
我有以下代码:
setcookie('username', $email, false, 'affiliates/', 'www.mydomain.com');
它在 IE 或 Safari 中不起作用。然后我改成:
setcookie('username', $email, time()+60*60*24, 'affiliates/', 'www.mydomain.com');
它开始工作了。现在,2天后,它不再起作用了。我不认为我改变了什么。正在另一个文件中检查 cookie 的设置,代码如下:
if( isset($_COOKIE['username']) ) {
...
}
else {
print( "<meta HTTP-EQUIV='REFRESH' content='0; url=index.html'>" );
exit();
}
它总是重定向到 index.html(在 Safari 和 IE 中)。任何想法为什么这会停止工作? (我已确保在两个浏览器中都启用了 cookie)。
在它停止工作期间我做的一件事是测试在 localhost 上运行的站点。我将代码更改为:
setcookie('username', $email, time()+60*60*24, 'affiliates/', null);
但仅适用于 localhost 版本。
【问题讨论】:
-
在 cookie 中设置密码是一个糟糕的主意,因为这意味着它会随着每个请求来回传输,并且大大增加了它被拦截的机会。如今,反转 MD5 哈希是可行的。虽然您可能对 cookie 有疑问,但您可能想回过头来为您在此处尝试解决的更大问题考虑更好的解决方案。
-
我猜你是对的,我只需要设置用户名 cookie。
-
然后用户可以更改他们的用户名并以其他人的身份登录。
-
他们仍然需要正确的密码。 Cookie 的唯一目的是防止有人直接输入其他人主页的 URL。
-
是的,但他们使用会话和/或其他可能在服务器端过期的随机不透明令牌。只是众所周知的用户名不是安全机密。
标签: php internet-explorer cookies safari setcookie