我在登录系统中使用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");
}
}
答案 0 :(得分:2)
变化:
setcookie('username', $username, 0, 'http://shkeek.com');
要:
setcookie('username', $username, (24*60*60), '/');
或:(见下文)
setcookie('username', $username, (24*60*60), '/', '.shkeek.com');
为什么:
您将“过期”时间设置为0秒。因此,Chrome正在制作一个“会话”cookie(当您关闭浏览器时将会过期),IE和FF将完全按照您的要求进行操作 - 使任何匹配的cookie过期。
(24*60*60)
是“有一天”; 24小时* 60小时*从现在起60秒。
对于“域路径”部分,您只需要为当前服务器和服务器路径设置“/”。
如果您为该网站支持多个子域,请改用'/', '.shkeek.com'
。然后,您支持www.shkeek.com
,shkeek.com
,img.shkeek.com
以及.shkeek.com
的任何其他子域。
有关详细信息,请查看PHP docs