2010-07-31 5 views
2

Я просто хочу спросить, нужно ли мне установить что-то, чтобы включить файлы cookie с моего хостинга?php cookies проблема

у меня есть этот

<?php 
setcookie("TestCookie","Hello",time()+3600); 
print_r($_COOKIE); 
?> 

он будет работать отлично на моем сервере, который XAMPP. но когда я загружу его на мой хостинг, он не будет функционировать .. что мне делать? или что я добавлю в код?

+1

Есть, вероятно, многочисленные дубликаты этого вопроса в stackoverflow (чего я не нашел в быстром поиске). Итак, давайте начнем другой контрольный список cookie. – VolkerK

+0

пожалуйста .. Мне нужны некоторые ответы .. :( –

+0

какие сообщения об ошибках отображаются? – saturngod

ответ

0

Возможно также, что файл cookie отправлен, но клиент не отправил значение обратно на веб-сервер в последующих запросах.
Возможные причины: часы

  • вашего сервера неправильно и поэтому время() + 3600 в прошлом с точки зрения клиента = > клиент будет немедленно удалить куки.
  • печенье провалило общий хвост проверки соответствия, поиск «хвост матч» в http://curl.haxx.se/rfc/cookie_spec.html
  • клиент настроен не принимать эти файлы

Есть много аддонов для различных браузеров, которые позволяют увидеть HTTP-заголовки, которые клиент получил. Например. Firebug для Firefox. Используйте их, чтобы проверить, есть ли a Set-cookie Заголовок в ответе.Если клиент по каким-то причинам отклонил его. Если такого заголовка нет, вы должны проверить, почему сервер не отправил его.

+0

часы моего сервера US/Central -05: 00 это нормально? –

+0

Я получил это сэр .. спасибо за ваши ответы .. часы вашего сервера неправильно сконфигурированы, и поэтому время() + 3600 в прошлом с точки зрения клиента => клиент немедленно удалит файл cookie. это ответ на мой вопрос .. я удаляю только время() + 3600 –

0

Cookies отправляются как http-ответ заголовки. Эти заголовки могут быть отправлены только что-либо из ответа тело отправлено.
Убедитесь, вывод не происходит до SetCookie():

  • не эхо, Printf, ReadFile
  • ничего вне <PHP?>, ни одного пробела или BOM в любом из скриптов, которые были включены и выполнены для одного и того же запроса до того, как setcookie()
  • повысит уровень error_reporting и проверьте наличие предупреждений и уведомлений. Эти сообщения обычно регистрируются в файле (например, error.log). Вы можете установить для display_errors значение true, чтобы увидеть их на выходе.

PHP может быть настроен на использование выходных буферов. В этом случае вывод не отправляется непосредственно клиенту, а сохраняется в буфере до тех пор, пока он не будет заполнен, буфер будет сброшен или конец скрипта (неявный флеш). Таким образом, до тех пор, пока содержимое буфера фактически не отправится клиенту, вы можете установить/изменить/удалить заголовки http, такие как файлы cookie. см. http://docs.php.net/outcontrol.configuration

+0

код выше не содержит эхо, PRINTF, ReadFile .. но до сих пор не функционирует сэр .. –

+0

Вы увеличили уровень ошибки_репортажа? Самый простой, быстрый (хотя и не самый лучший) способ сделать это - добавить «error_reporting (E_ALL); ini_set ('display_errors', 1);' скрипту, где-то там выполняется до 's etcookie() '. – VolkerK

+0

Я сделал это, но нет ошибки.

0

Используйте панель инструментов веб-разработчика для просмотра файлов cookie.

Мои проблемные дни в практике PHP напоминает мне:

  • может быть новая линия впереди <?php [это произошло со мной, когда я использую некоторые прокси для загрузки]
  • провайдеров бесплатный хостинг включают ("top_ads .php "), который помещается поверх вашего php-файла [это произошло со мной, когда я использовал бесплатный хостинг)
+0

, когда я поставил include (" top_ads.php ") сверху, есть ошибка, которая не открыла поток: нет такого файла или каталога –

0

Если я не ошибаюсь ... Cookies недоступны на той же странице - должно быть на следующей странице. Как только файлы cookie установлены, вам нужно переслать на другую страницу с помощью заголовка(); функции, и ТОГДА становятся доступными $ _COOKIE vars. Он не предназначен для работы на одной странице.