Постоянные файлы cookie PHP в IE исчезают по окончании сеанса

#php #internet-explorer #cookies

#php #internet-explorer #файлы cookie

Вопрос:

Я не могу поверить, что это ставит меня в тупик, но…

Весь код дляhttp://dev.mysite.com/cookie .php читает:

 <?php
setcookie("foo", "bar", time() 2629743, "/", ".mysite.com");
var_dump($_COOKIE);
?>
  

Весь код дляhttp://dev.mysite.com/cookie2.php читает:

 <?php
var_dump($_COOKIE);
?>
  

Я открываю IE9. Я перехожу к первому URL. Вывод:

массив (0) { }

Не уверен, что с этим, просмотр заголовков ответов в IE dev tools четко показывает следующее:

 Set-Cookie: foo=bar; expires=Thu, 08-Dec-2011 05:13:17 GMT; path=/; domain=.mysite.com
  

Я обновляю страницу. Вывод:

массив (1) { [«foo»]=> строка (3) «bar» }

Хорошо, вот мой файл cookie. Опять же, просмотр информации о файлах cookie в инструментах разработки показывает мне:

NAME foo VALUE bar ДОМЕН mysite.com ПУТЬ / ИСТЕКАЕТ 08/12/2011 05:24:00

Магия. Теперь я закрываю IE, снова открываю и перехожу ко второму URL. Который должен просто выгрузить все содержимое файлов cookie. Вывод:

массив (0) { }

Очевидно, что я где-то на удивление глуп, но где?

Комментарии:

1. Что это за ссылка на сеансы? И какой сеанс вы имеете в виду?

2. Я имею в виду сеанс браузера. Тот, который завершается при закрытии браузера.

Ответ №1:

Что касается первой части вашей проблемы:

$_COOKIE Не устанавливается в PHP во время первого выполнения PHP, он просто передается в браузер. Вот почему он появляется во второй раз, потому что ваш браузер отправляет его обратно на PHP, а PHP загружает его в $_COOKIE .

Можете ли вы отредактировать свой пост, чтобы показать либо реальные примеры текста домена в файле cookie, либо, по крайней мере, согласовать вымышленные домены?

РЕДАКТИРОВАТЬ: Просматривая домен из вашего фактического списка файлов cookie в инструментах разработки, я выполнил точные шаги, которые вы описали в своем сообщении. После завершения работы IE8 я вернулся на первую страницу, и информация о файлах cookie была там.

Ваша проблема где-то в IE9. Есть ли настройка javascript / блокирование одного и того же файла cookie? Происходит ли эта потеря с файлами cookie для других сайтов в вашей установке IE9?

Комментарии:

1. Это относится ко всем суперглобальным файлам — они заполняются как часть запуска скрипта, а затем больше не затрагиваются PHP.

2. Упс. Отредактировал сообщение. Спасибо за предупреждение. Это происходит только с файлами cookie на моем сайте. Другие файлы cookie являются постоянными для доменов, размещенных на том же сервере. Однако он также работает на IE8 коллеги. Может ли это быть просто моим IE9?

3. @Wintermute, на самом деле было полезно, что вы оставили это, поскольку я смог точно повторить ваши шаги и убедиться, что это работает в IE8. Таким образом, у вас нет проблемы с PHP. У вас проблема с IE9.