2013-12-23 161 views
0

我使用cookie我的登录系统和系统适用于Chrome,但后来当我去到IE或Safari浏览器,它不工作。由于某些原因,cookies没有设置,我试图回应他们无济于事。Cookie在Chrome中运行,但不在IE或Safari中运行?

这里是使饼干代码:

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"); 
    } 
} 

回答

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.comshkeek.comimg.shkeek.com.shkeek.com任何其他子域的支持。

有关更多详细信息,请检查PHP docs

相关问题