setcookie в течение небольшого времени не работает в не-Firefox - PullRequest
0 голосов
/ 22 мая 2011

Во время тестирования некоторых сценариев я заметил, что если время истечения мало (не равно нулю) - cookie не доступны в Chrome, Opera, IE.

Пример:

<?php
// setting cookie for 5 minutes
setcookie( 'cookie1' , 'Test', time()+60*5 );
echo $_COOKIE['cookie1'];
// yeap (it should display it only with refresh of page - I know:)
?>

В Firefox - я вижу слово Test (после открытия и обновления страницы).

Но в другом браузере - этого не вижу.Например, если я изменил время на time()+60*100 - оно отлично работает во всех браузерах.

В чем причина этого?

UPD:

Из Chome Dev Tool (извините, не знаю, как называется Chrome firebug):

Date:Sun, 22 May 2011 10:29:59 GMT
Keep-Alive:timeout=15, max=99
Server:Apache/2.2.14 (Ubuntu)
Set-Cookie:Maslo123=Test; expires=Sun, 22-May-2011 10:34:59 GMT

Дата раньше, чем истекает;

1 Ответ

1 голос
/ 22 мая 2011

Поскольку мы уже поняли, что время вашего сервера неправильное на несколько часов, и, следовательно, срок действия файлов cookie уже истек.

Причина, по которой Firefox все еще хранит файл cookie, может заключаться в том, что он обнаруживает нечетную разницу во времени междусервер и клиент и использует разницу между значением Date и значением атрибута Expires для определения даты истечения срока действия cookie.

Эти проблемы также являются причиной последнихСтандарты RFC, такие как текущий RFC 6265 , предпочитают относительное значение времени дельта-секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...