php $ _COOKIE isset - PullRequest
       8

php $ _COOKIE isset

0 голосов
/ 23 февраля 2012

Я использую этот код для установки файла cookie, а затем проверяю, существуют ли они

setcookie("token", "value", time()+60*60*24*100, "/");
setcookie("secret", "value", time()+60*60*24*100, "/");
setcookie("key", "value", time()+60*60*24*100, "/");

if (!isset($_COOKIE['token']) || !isset($_COOKIE['secret']) || !isset($_COOKIE['key'])) {

// do something because one of the cookies were not set

}

Несмотря на то, что все три файла cookie были установлены в моем браузере, он все равно выполняет оператор if().В процессе удаления я обнаружил, что средний cookie !isset($_COOKIE['secret']), кажется, вызывает выполнение оператора if(), даже если cookie secret был установлен в моем браузере.Сценарий говорит, что он не был установлен, когда я смотрю на свой браузер, и он был установлен.Можете ли вы вспомнить причину, по которой php говорит, что она не установлена?

Ответы [ 2 ]

7 голосов
/ 23 февраля 2012

setcookie определяет только файл cookie, который будет отправлен вместе с остальными заголовками HTTP, и к ним можно получить доступ при следующей загрузке страницы с помощью $_COOKIE. С вашим кодом заголовки HTTP не отправляются.

Вам просто нужно setcookie, если cookie не установлен. Как:

if (!isset($_COOKIE['token'])) {
    setcookie("token", "value", time()+60*60*24*100, "/");
}
0 голосов
/ 23 февраля 2012

использование

if(true === array_key_exists('secret', $_COOKIE) && strlen($_COOKIE['secret']) > 0) {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...