Php setcookie()在internet explorer或safari中不工作
我有以下代码:Php setcookie()在internet explorer或safari中不工作,php,internet-explorer,cookies,safari,setcookie,Php,Internet Explorer,Cookies,Safari,Setcookie,我有以下代码: setcookie('username', $email, false, 'affiliates/', 'www.mydomain.com'); 它在IE或Safari中不起作用。然后我把它改成: setcookie('username', $email, time()+60*60*24, 'affiliates/', 'www.mydomain.com'); 它开始工作了。现在,两天后,它又不起作用了。我想我没有改变什么。正在另一个文件中检查cookie的设置,代码如下:
setcookie('username', $email, false, 'affiliates/', 'www.mydomain.com');
它在IE或Safari中不起作用。然后我把它改成:
setcookie('username', $email, time()+60*60*24, 'affiliates/', 'www.mydomain.com');
它开始工作了。现在,两天后,它又不起作用了。我想我没有改变什么。正在另一个文件中检查cookie的设置,代码如下:
if( isset($_COOKIE['username']) ) {
...
}
else {
print( "<meta HTTP-EQUIV='REFRESH' content='0; url=index.html'>" );
exit();
}
但仅适用于本地主机版本。您确定在所有其他输出之前有setcookie吗?不能在任何类似文本或html之后设置标题。也许你需要把你头顶上的空间移走
此外,必须从相同的域和路径设置和使用cookie 在cookie中设置密码是一个糟糕的主意,因为这意味着每次请求都会来回传输密码,大大提高了密码被拦截的机会。如今,逆转MD5哈希是可行的。虽然您可能对cookie有问题,但您可能希望返回并为您试图解决的更大问题考虑更好的解决方案。我想您是对的,我只需要设置用户名cookie。然后用户可以更改用户名并以其他人的身份登录。他们仍然需要正确的密码。cookie的唯一用途是防止某人直接键入其他人主页的URL。是的,但他们使用会话和/或其他随机不透明令牌,这些令牌可能会在服务器端过期。众所周知的用户名并不是一个安全的秘密。“此外,cookie必须从相同的域和路径设置和使用。”cookie在mydomain.com/signin.php中设置,并在mydomain.com/affiliates/homepage.php中检查。这就是为什么我将路径设置为“附属机构/”。正确吗?当路径属性的值不是请求URI的前缀时,将拒绝Cookie。没有小路它能用吗?是的。我把“附属公司/”改为“/”,现在它似乎可以工作了。
setcookie('username', $email, time()+60*60*24, 'affiliates/', null);