2011-01-25 5 views
0

У меня есть страницы, которые создают ценность печенья с использованием set_cookie так:проблемы с печеньем

setcookie("is_voted","1",time()+60*60*24*10,"/~poll/","spacepower.tv"); 

, но я не могу получить это значение куков, используя массив $ _COOKIE

, как это исправить проблема?

+3

Просьба указать код. – eykanal

+0

Если вы используете '$ _COOKIE' в том же скрипте, где вы устанавливаете файл cookie, вы не получаете никакого значения, так как cookie зарегистрирован в этом скрипте и будет доступен только после первого запуска. – Shoe

+0

Как выглядит URL-адрес, который проверяет cookie? Если он не находится в каталоге '/ ~ poll /', он не будет доступен для скрипта. Установка пути к '/' сделает его доступным для всего домена. – stealthyninja

ответ

0

Я столкнулся с той же проблемой. Согласно PHP инструкции:

Cookies не будет виден до следующей загрузки страницы, что печенье должно быть открыто для просмотра. Чтобы проверить , если файл cookie был успешно установлен, проверьте, есть ли файл cookie на следующей странице загрузки , прежде чем файл cookie истечет. Истекает Время устанавливается через параметр expire. Хороший способ отладить существование cookie - это просто позвонить print_r ($ _ COOKIE) ;.

В принципе, суперкоммулятор $ _COOKIE обновляется только при первом запуске скрипта. Если вы установите новый файл cookie, он не будет сразу доступен в $ _COOKIES. Вы должны запустить скрипт, чтобы увидеть обновленные значения $ _COOKIE. Если вы не видите их , то, у вас возникли проблемы.

+0

Я использую массив $ _COOKIE, чтобы получить значение cookie в другом файле –

+0

Ahh. В этом случае вам нужно будет показать нам код. –

+0

Вы уверены, что в вашем браузере принимает cookies? Если вы не принимаете файлы cookie, он не будет установлен в следующий раз, когда скрипт проверяет файлы cookie. – zzzzBov

0

В соответствии с php.net:

Печенье являются частью заголовка HTTP, поэтому SetCookie() должна вызываться до любого вывода отправляется в браузер.

Когда они говорят перед любым выходом, они означают любой выход. Если есть пробелы, включая пустые строки, вне блоков <?php ?>, это приведет к отправке заголовков, и cookie не будет установлен.

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