PHP не может читать куки? - PullRequest
2 голосов
/ 12 июня 2011

Мне нравится использовать PHP, чтобы посмотреть, присутствует ли файл cookie PHPSID27258STATUS со значением COMPLETE en, если это так.

В Google Chrome (в настройках) я вижу, что этот cookie присутствует и имеет значение COMPLETE.

Если я запускаю этот PHP-скрипт, я получаю «Not Set». Что я тут не так делаю?

$cookiename="PHPSID27258STATUS";
if (isset($_COOKIE[$cookiename]) && $_COOKIE[$cookiename] == "COMPLETE")

- обновление
Файл cookie устанавливается "limesurvey", платформой опросов с открытым исходным кодом. Хотя это, вероятно, не лучший способ. Я использую LimeSurvey, чтобы провести небольшой опрос (iframe) на сайте, который я строю. Я хотел бы, чтобы опрос исчез при следующем посещении, когда оно будет опубликовано. Limesurvey запускается с того же хоста (теперь localhost). И находится в подкаталоге сайта.

Полагаю (но в LS много кода), это то, как файл cookie создается после завершения опроса / публикации.

$cookiename="PHPSID".returnglobal('sid')."STATUS";
setcookie("$cookiename", "COMPLETE", time() + 31536000); //Cookie will expire in 365 days

Ответы [ 4 ]

2 голосов
/ 12 июня 2011

Вы можете только читать куки, которые принадлежат тому же домену, что и скрипт чтения. Например, если файл cookie PHPSID27258STATUS был установлен доменом xyz.com, вы не можете прочитать его с помощью сценария на сайте abc.com. Поэтому убедитесь, что домен вашего желаемого куки совпадает. Также покажите нам часть кода, где вы устанавливаете свой cookie.

Edit:

setcookie($cookiename, "COMPLETE", (time() + 31536000) , '/');
1 голос
/ 12 октября 2013

Попробуйте установить cookie с этим кодом:

setcookie("cookiename", "cookievalue", time() + 31536000, "/");

Это делает куки доступными для всего домена, недавно я столкнулся с той же проблемой, и когда я попробовал это, он заставил его работать, причина в том, что ваш браузер хранит куки как для domain.com, так и для www.domain.com, так Вы никогда не знаете, какие настройки вы используете, и рекомендуется устанавливать домен, даже если у вас нет этой проблемы.

1 голос
/ 12 июня 2011

Вы не можете получить доступ к cookie-файлу сразу после его установки.По крайней мере, в прошлый раз так было.Убедитесь, что у вас нет этой проблемы.Если это не так, возможно, у вас возникла проблема с установкой файла cookie, и в этом случае, пожалуйста, опубликуйте и эту часть.

0 голосов
/ 12 июня 2011

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

Если для файла cookie задан путь, он будет доступен толькона страницы в этом пути.Это поведение описано на странице руководства PHP setcookie() .

Когда вы устанавливаете файлы cookie со страницы в подкаталоге, чтобы файл cookie был доступен длявесь сайт, setcookie() должен вызываться с необязательным параметром path, установленным в "/".

Вы заявляете, что LimeSurvey устанавливает cookie.Я не знаю это программное обеспечение, но вы должны быть в состоянии посмотреть на источник и посмотреть, использует ли он параметр path, когда он устанавливает cookie.Если нет, лучшим вариантом будет изменить его так, чтобы он изменился.Тогда куки будут доступны всему сайту.(Было бы вполне понятно, если бы разработчики LineSurvey решили не устанавливать его для всего сайта, поскольку это позволило бы запускать программное обеспечение как более изолированную сущность от всего остального на сайте).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...