Php cookie не устанавливается - PullRequest
2 голосов
/ 19 марта 2012

Хорошо, я совершенно сбит с толку.

Вот мой код:

if ($password == $correct_password[0] && !isset($_COOKIE['user'])) {
            setcookie("user", $email, time() + 3600);
            var_dump(isset($_COOKIE['user']));
            echo "!";
        }

Так что он делает var_dumps, то есть должен вызывать setcookie. Но строка сразу после нее (проверяя, установлена ​​ли она) говорит, что она не установлена!

Если бы кто-нибудь мог указать на проблему, она была бы очень признательна. Спасибо

Ответы [ 4 ]

1 голос
/ 19 марта 2012

PHP - это серверный язык.

Это означает, что он может генерировать все, что захочет, и затем передавать его клиенту.
И все.
Нет возврата и пересылки по одному запросу.

1º you instruct the page 'A' to set a cookie
2º client recieves page 'A' and sets the cookie
3º client asks for page 'B' (sending the cookie)
4º server can identify the cookie (only on page 'B')

Страница здесь используется как простой способ понимания вызова сервера.
Вы можете запросить одну и ту же страницу дважды для этой цели.

1 голос
/ 19 марта 2012

$ _ COOKIE заполняется / загружается при первом запуске скрипта, а затем NOT обновляется PHP снова для жизни скрипта. Установка cookie через setcookie будет отображаться только в $ _COOKIE при следующем выполнении сценария.

Это относится ко всем суперглобалам, кроме $ _SESSION. Они заполняются / инициализируются при запуске скрипта, а затем PHP никогда больше их не трогает. $ _SESSION заполняется, когда вы вызываете session_start() (или сеансы настроены на автоматический запуск), что может быть выполнено несколько раз за время существования скрипта.

0 голосов
/ 16 апреля 2012

Когда вы используете setcookie (), он сохранит свое значение в следующий раз, когда будет загружен HTML. Если вы хотите увидеть vardump со значением, которое вы просто присвоили , вам нужно использовать $ _COOKIE ['cookie_name'] = $ value;

0 голосов
/ 22 марта 2012

До сих пор не нашел надежного правильного ответа, но после бесконечных часов тестирования это кажется чем-то со временем. Если я установил дату истечения срока действия слишком близко к реальному времени, возможно, он не регистрируется или что-то в этом роде. Казалось, что это сработало, когда я установил время дальше, но я снова делаю перерыв перед тяжелыми испытаниями. Спасибо

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