2013-12-23 2 views
0

Я использую файлы cookie с моей системой входа в систему, и система работает в Chrome, но затем, когда я перехожу к IE или Safari, она не работает. По какой-то причине файлы cookie не устанавливаются, я попытался их повторить безрезультатно.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'); 

To:

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

Смежные вопросы