php $ _COOKIE isset

Я использую этот код, чтобы установить файл 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() хотя secret cookie был установлен в моем браузере. Сценарий говорит, что он не был установлен, когда я смотрю на свой браузер, и он был установлен. Можете ли вы подумать о какой-либо причине, почему php говорит, что он не был установлен?

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

Вам просто нужно setcookie когда cookie не установлен. Подобно:

 if (!isset($_COOKIE['token'])) { setcookie("token", "value", time()+60*60*24*100, "/"); } 

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

 if(array_key_exists($_COOKIE, 'secret') && strlen($_COOKIE['secret']) > 0) { }