Мне нравится использовать PHP, чтобы узнать, присутствует ли файл cookie PHPSID27258STATUS
со значением COMPLETE
en, если это так.
В google chrome (в Options) я вижу, что этот файл cookie присутствует и имеет значение COMPLETE
.
Если я запустил этот скрипт PHP, я получаю «Не задано». Что я здесь делаю неправильно?
$cookiename="PHPSID27258STATUS"; if (isset($_COOKIE[$cookiename]) && $_COOKIE[$cookiename] == "COMPLETE")
–Обновить
Печенье устанавливается платформой обзора с открытым исходным кодом «limesurvey». Хотя, вероятно, это не самый лучший способ. Я использую limesurvey для проведения небольшого опроса (iframe) на сайте, который я строю. Мне нравится, чтобы опрос исчез при следующем посещении, когда он отправил бин. Limesurvey работает с одного и того же хоста (localhost now). И находится в подкаталоге сайта.
Я думаю (но в LS есть много кода), так как cookie создается после завершения опроса / сообщения.
$cookiename="PHPSID".returnglobal('sid')."STATUS"; setcookie("$cookiename", "COMPLETE", time() + 31536000); //Cookie will expire in 365 days
Вы не можете получить доступ к файлу cookie сразу после его установки. По крайней мере, в прошлый раз это было так. Удостоверьтесь, что у вас нет этой проблемы. Если это не так, у вас есть проблема с настройкой файла cookie, и в этом случае отправьте эту часть.
Вы можете читать только файлы cookie, принадлежащие тому же домену, что и скрипт чтения. Например, если файл cookie PHPSID27258STATUS был установлен доменом xyz.com, вы не можете прочитать его, используя скрипт на abc.com. Поэтому убедитесь, что домен вашего желаемого файла cookie совпадает. Также покажите нам часть кода, в которой вы настраиваете свой файл cookie.
Редактировать:
setcookie($cookiename, "COMPLETE", (time() + 31536000) , '/');
Попробуйте настроить файл cookie с помощью этого кода:
setcookie("cookiename", "cookievalue", time() + 31536000, "/");
Это делает файл cookie доступным для всего домена, я недавно столкнулся с той же проблемой, и когда я это пробовал, он заставил его работать, причина в том, что ваш браузер хранит файлы cookie для домена domain.com и http://www.domain.com, поэтому вы никогда не знаете от которого зависит ваш настрой и получение, рекомендуется установить домен, даже если у вас нет этой проблемы.
Вы отмечаете, что cookie задается программой, запущенной в своем собственном подкаталоге. Вы не указываете, установлен ли сам файл cookie в этом подкаталоге, но я подозреваю, что это ваша проблема.
Если cookie установлен в путь, он будет доступен только для страниц в этом пути. Это поведение описано на setcookie()
руководства PHP setcookie()
.
Когда вы устанавливаете файлы cookie на странице в подкаталоге, то для того, чтобы файл cookie был доступен для всего сайта, необходимо setcookie()
с дополнительным параметром path
установленным на "/"
.
Вы указываете, что файл cookie устанавливается LimeSurvey. Я не знаю этого программного обеспечения, но вы должны иметь возможность посмотреть на источник и посмотреть, использует ли он параметр path
когда он устанавливает cookie. Если нет, лучшим вариантом было бы изменить его так, чтобы он это делал. Затем файл cookie будет доступен для всего сайта. (Было бы вполне понятно, если разработчики LineSurvey решили не устанавливать его для всего сайта, потому что это позволит запускать программное обеспечение как более изолированное лицо из чего-либо еще на сайте).