Подтвердить что ты не робот

Файлы cookie, не работающие на разных страницах

Хорошо У меня есть набор файлов cookie, и я могу отчетливо видеть его, если я перехожу на частные данные в Firefox... нормально, поэтому, когда я повторяю его на одной странице в определенном каталоге, он работает (www.example.com/dir), но на странице индекса сайта (www.example.com) он не будет эхом, он говорит, что cookie не установлен. Да, у меня есть файлы cookie, да, я попробовал очистить кеш и все такое. Есть идеи? PHP btw

4b9b3361

Ответ 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 не будет отправлен.