Intereting Posts
Как получить размер файла удаленно сохраненного изображения? (РНР) upstream отправляет слишком большой заголовок при чтении заголовка ответа от восходящего потока preg_match все слова начинаются с @? CURL: отправка изображений с помощью границы в REST API Как сделать форму, отправьте PHP-способ с помощью Angularjs? Как установить правила проверки формы для CodeIgniter динамически? Как проверить строку в строке, заданной в dynamodb Как удалить один продукт из mod_virtuemart_cart PHP Загрузка и перезапись файла с тем же именем Продолжайте получать ошибки на веб-сайте с помощью AnchorCMS Допустимо ли распространять функции библиотеки PHP исключительно для изменения имен? password_verify не возвращает true / false Проблемы с отображением php-сайта локально с XAMPP-пакетом. Сайт отлично работает на удаленном сервере Как избежать неопределенного индекса как разрешить дублирование ключей в php-массиве

Проблема с обнаружением файлов cookie в PHP

Вот простая функция, которую я использую:

public function control() { $string = 'lolcheck'; setcookie($string, $string, time() + 120, $this->path, $this->domain); if (isset($_COOKIE[ $string ])) return true; else return false; } 

Проблема в том, что он работает только при открытии страницы дважды, потому что он получает ранее установленный файл cookie.

По-видимому, все предлагают использовать эту практику, но она не работает для меня.

Я что-то упускаю?

Solutions Collecting From Web of "Проблема с обнаружением файлов cookie в PHP"

Файлы cookie не работают. Когда cookie установлен, он недоступен (т. $_COOKIE ключ $_COOKIE существует) до следующего запроса.

Что на самом деле происходит:

  • клиент отправляет запросы
  • сервер отправляет ответ, содержащий поле заголовка ответа Set-Cookie

После этого клиент отправляет файл cookie вместе с любым следующим запросом:

  • клиент отправляет запрос, содержащий соответствующее поле заголовка запроса cookie
  • сервер регистрирует ключ $_COOKIE

В документах :

Куки-файлы не станут видимыми до следующей загрузки страницы, на которой должен отображаться файл cookie. Чтобы проверить, был ли файл cookie успешно установлен, проверьте, будет ли файл cookie на следующей странице загрузки до истечения срока действия файла cookie. Время истечения устанавливается через параметр expire. Хорошим способом отладки существования файлов cookie является просто вызов print_r ($ _ COOKIE) ;.

Если вам нужно, чтобы он был доступен на той же странице, используйте сеансы вместо этого или перенаправляйте на тот же URL-адрес после вызова setcookie .

Файлы cookie устанавливаются / принимаются как часть обмена заголовками http, поэтому при обычных обстоятельствах это одно из первых, что клиент / браузер отправляет / получает. Для вашей проблемы клиент только знает, что у него есть куки-файл для отправки по второму запросу.

Использование хорошего расширения Firefox, такого как Live HTTP Headers, может помочь вам узнать, какие сообщения отправлены, когда.