Не могу установить PHP cookie на той же странице - PullRequest
3 голосов
/ 17 сентября 2011

У меня проблемы с установкой файлов cookie на той же странице. Я использовал куки на своем сайте, и он работает нормально, я стараюсь сделать PHP в отдельном файле. Сейчас я устанавливаю cookie на той же странице, но, похоже, он не работает.

$expire = time()+5;
setcookie("rb_vote", 1, $expire);

, затем проверьте, установлено ли оно

if(isset($_COOKIE["rb_vote"]))  {
echo "IS SET";}
else {
echo "IS NOT SET"; }

Он всегда говорит, что не установлен. Я пытался сделать это при загрузке страницы, но все равно не работает.

Ответы [ 2 ]

9 голосов
/ 17 сентября 2011

См. руководство по setcookie () (выделено мной):

После того, как куки установлены, к ним можно получить доступ на следующей странице, загрузить с массивами $ _COOKIE или $ HTTP_COOKIE_VARS. Обратите внимание, суперглобальные переменные, такие как $ _COOKIE, стали доступны в PHP 4.1.0. Значения cookie также существуют в $ _REQUEST

Здесь - это обходное решение. Он несовершенен, потому что не может гарантировать, что куки-файлы действительно установлены, но могут в вашем случае.

2 голосов
/ 07 апреля 2013

Я только что столкнулся с этой проблемой на форуме Vanilla.При загрузке первой страницы, перед тем как сеанс был установлен, создается cookie сеанса, но затем каждый раз, когда приложение хочет получить доступ к переменным сеанса (чтобы добавить к ним), оно ищет идентификатор текущего сеанса в $ _COOKIE, которыйне устанавливается до следующей загрузки страницы.

Мой обходной путь - установить элемент $ _COOKIE вручную при создании файла cookie.

// Create a cookie to identify the session.
// This line already exists. $Name is the cookie name.
// $SessionID is a random md5 ID that has just been generated.
setcookie($Name, $SessionID, $Expire, $Path, $Domain);

// Set the cookie for the remainder of the page. This is a workaround.
if (!isset($_COOKIE[$Name])) $_COOKIE[$Name] = $SessionID;

Я поднял это как ошибку в Vanilla (https://github.com/vanillaforums/Garden/issues/1568),, поскольку этот обходной путь выглядит как хакерский, но сейчас он наверняка решит проблему.

PHP5.3 Vanilla Forum Version 2.0.18.4

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