我在登录系统中使用 cookie,该系统在 Chrome 上运行,但当我转到 IE 或 Safari 时,它无法运行。由于某种原因未设置 cookie,我尝试回显它们但无济于事。
下面是制作 cookie 的代码:
if(isset($_POST['log_in_iniator'])){
$username = $_POST['username'];
$password = $_POST['password'];
$log_in_checker_status = check_user_data($username, $password);
if($log_in_checker_status == 'true'){
//user has successfully logged in, create two cookies
//cookie 1 username
setcookie('username', $username, 0, 'http://shkeek.com');
setcookie('loginstatus', 'true', 0, 'http://shkeek.com');
header("Location: index.php");
}else{
setcookie('loginstatus', 'invalid', 0);
header("Location: index.php");
}
}
最佳答案
更改:
setcookie('username', $username, 0, 'http://shkeek.com');
致:
setcookie('username', $username, (24*60*60), '/');
或者:(见下文)
setcookie('username', $username, (24*60*60), '/', '.shkeek.com');
为什么:
您正在将“过期”时间设置为从现在起 0 秒。因此,Chrome 正在创建一个“ session ”cookie(当您关闭浏览器时将过期),而 IE 和 FF 将完全按照您告诉他们的操作 - 使任何匹配的 cookie 过期。
(24*60*60)
是“一天”;从现在起 24 小时 * 60 分钟 * 60 秒。
“域路径”部分,只需设置当前服务器和服务器路径的“/”即可。
如果您的网站支持多个子域,请改用'/', '.shkeek.com'
。这样您就可以支持 www.shkeek.com
、shkeek.com
、img.shkeek.com
以及 的任何其他子域.shkeek.com
.
有关更多详细信息,请查看PHP docs
关于php - Cookie 在 Chrome 中有效,但在 IE 或 Safari 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20735818/