Хорошо, у меня есть набор файлов cookie, и я могу отчетливо видеть его, если я перехожу на частные данные в Firefox … нормально, поэтому, когда я повторяю его на одной странице в определенном каталоге, он работает (www.example.com/dir) но на странице индекса сайта (www.example.com) он не будет эхом, он говорит, что cookie не установлен. Да, у меня есть файлы cookie, да, я попробовал очистить кеш и все такое. Есть идеи? PHP btw
В каком каталоге вы находитесь, когда cookie устанавливается?
Из руководства PHP по setcookie () основное внимание уделяется:
Дорожка
Путь на сервере, на котором будет доступен cookie. Если установлено значение '/', файл cookie будет доступен во всем домене. Если установлено значение '/ foo /', cookie будет доступен только в каталоге / foo / и всех подкаталогах, таких как / foo / bar / домена. Значение по умолчанию – это текущий каталог, в который установлен файл cookie.
Файлы cookie могут быть привязаны к определенному домену, субдомену, пути и протоколу (http / https). Вы должны указать путь при настройке файла cookie в PHP:
setcookie("TestCookie", "Value", time()+3600 , '/' );
Четвертый параметр привязывает его к корню сайта, и он будет доступен в любом подкаталоге основного сайта.
Если вы хотите, чтобы он был доступен в основном домене и в любом поддомене, поставьте пятый параметр следующим образом:
setcookie("TestCookie", "Value", time()+3600 , '/', '.example.com' );
Теперь он будет доступен для чтения:
http://www.example.com
example.com/newdir
awesome.example.com/newdir
Да, попробуйте это, я тоже столкнулся с этой проблемой, но разрешил этот код ниже.
setcookie("TestCookie", "Value", time()+3600 , '/' );
Вам нужно проверить путь, по которому настроен файл cookie.
Если это не '/'
, есть ваш ответ!
Задайте свой путь; значением по умолчанию является текущий каталог, в котором установлен файл cookie. Поскольку вы устанавливаете файл cookie в каталоге / dir, он доступен только в этом каталоге или под ним.
Вы обойдете это, явно задав путь, т. Е.
setcookie(name,value,expire,path,domain,secure)
Установите путь к «/».
Вам нужно установить $ path в / в setcookie()
, если вы хотите получить к нему доступ во всех каталогах
Печенье должно быть установлено до выхода страницы !!! Поскольку файлы cookie отправляются сценарием в браузер в заголовках HTTP, перед отправкой вашей страницы они должны быть установлены до того, как вы даже отправите одну строку HTML или любую другую страницу . Когда вы отправляете какой-либо вывод, вы сигнализируете о конце HTTP-заголовков. Когда это произойдет, вы больше не можете устанавливать cookie. Если вы попытаетесь, функция setcookie () вернет FALSE, и cookie не будет отправлен.