Setcookie не устанавливает печенье - PullRequest
0 голосов
/ 20 июля 2011

Привет, ребята, я пытаюсь установить cookie, используя

    setcookie("ms_il_cart_save_for_3", "cName", time()+3600);
    header("Location: store-cart3.php");
    exit;

, когда я перехожу на store-cart3.php, файл cookie не был установлен. Var dump on cookie показывает NULL, для меня это работаетгод к настоящему времени.сегодня я обновил изменения, не относящиеся к этому коду, я точно знаю, что это сработало до сих пор, перед этим кодом ничего не стоит HTML, и я не думаю, что изменил кодировку файлов, возможно, мой веб-сервер блокирует создание cookie из-замеры безопасности?(я запускал этот код сегодня около 100 раз)

это просто раздражает какие-то идеи?

Ответы [ 4 ]

1 голос
/ 20 июля 2011

Настройка cookie будет работать, только если заголовки еще не отправлены. Если вы уже отправили заголовки или содержимое клиенту, setcookie не будет работать. Для настройки файлов cookie также требуется, чтобы клиент принял файл cookie. Если это не так, вы ничего не можете с этим поделать, кроме как сообщить им, что ему необходимо принять файлы cookie для работы вашей системы.

РЕДАКТИРОВАТЬ: Вы сказали в своем посте, что вы внесли изменения в несвязанный код, и теперь ваш setcookie больше не работает. Возможно, в вашем несвязанном коде есть ошибка, из-за которой PHP выводит сообщение об ошибке в браузер. Это приведет к отправке всех заголовков, и любые вызовы setcookie, сделанные после этой точки, не будут работать.

0 голосов
/ 20 июля 2011

Это браузер? Я заметил, что браузеры Blackberry не обрабатывают файлы cookie, возвращенные в ответе о перенаправлении, но MSIE и Firefox рады.

Поскольку перенаправление происходит после setcookie, я полагаю, было бы довольно очевидно, если бы заголовки уже были отправлены. Но вы проверили, что cookie все еще находится в заголовках ответа? (ieHTTPHeaders, firebug, tamperdata, fiddler, wireshark)

Если нет, попробуйте изменить порядок вызовов setcookie () и header ().

0 голосов
/ 20 июля 2011

Возможно, вы выделили некоторый контент перед вызовом того, что функции и заголовки уже отправлены.

Попробуйте запустить буферизацию вывода в начале вашего скрипта с помощью ob_start()

Также проверьте свои файлы напредупреждения / уведомления и байты utf-8 спецификации в начале текстового файла, которые не видны в текстовом редакторе.

0 голосов
/ 20 июля 2011

Когда вы устанавливаете cookie на странице, которая перенаправляет таким образом, вы должны установить cookie после вызова на header().

Так что ваш пример должен быть:

header("Location: store-cart3.php");
setcookie("ms_il_cart_save_for_3", "cName", time()+3600);
exit;
...