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