Intereting Posts
как загрузить текстовый файл с помощью dfferent php script process Как показать случайную запись в WP, за исключением последнего сообщения Насколько это возможно, демон, написанный на PHP, с использованием ignore_user abort и set_time_limit (0) Как добавить пользовательскую кнопку и ее функциональность в Admin Silverstripe? WooCommerce – Сделать набор купонов, добавив фиксированную плату к заказу Кодировать и декодировать идентификатор сообщения URL-адреса, используя php как использовать solr с mysql и php? Как установить UTF8 на PHP при подключении к ACCESS 2007 (ODBC) Как отправить форму загрузки файла с помощью ajax? как получить список всех путей / файлов на веб-странице с помощью wget или curl в php? Не-браузерная эмуляция JavaScript – возможно ли это? Элементы массива разметки PHP Как распечатать все результаты POST при отправке формы? У меня ошибка в laravel по функции /vendor/guzzlehttp/psr7/src/functions.php в строке 77 добавить в массив, если он еще не существует

PHP cookie имеет одну задержку обновления

Возможный дубликат:
Cookie отображается только при обновлении?

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

Чтобы уточнить: у меня есть специальная форма, которая позволит пользователям выбирать цвета. Затем появляется кнопка Apply. После того, как эта кнопка применяется, страница должна автоматически установить cookie и показать цвет. Однако, когда нажата кнопка Apply, устанавливается только cookie, и тема не отображается, пока пользователь не нажмет кнопку обновления. Любые идеи о том, как это решить?

$help = $_POST["theme"]; $color = "#" . $help; setcookie("TestCookie", $color, time()+60*60*24); $recolor = $_COOKIE["TestCookie"]; echo '<style type="text/css"> body { background: '.$recolor.' } </style>'; 

где $ _POST ["theme"] – имя выбранной формы. Большое спасибо! это: Cookie отображается только при обновлении? это то, о чем я говорю, но с PHP, а не с C #

Редактировать: Спасибо за все ответы! Мне удалось обойти это, установив цвет фона на то, что выбрал пользователь, одновременно устанавливая файл cookie. Поэтому, когда пользователь изначально выбирает цвет, это не файл cookie, задающий фон. Это еще одна функция. Он чувствует себя немного дешевым, но он работает!

Solutions Collecting From Web of "PHP cookie имеет одну задержку обновления"

Суперглобальный $ _COOKIE имеет файлы cookie, доступные в то время, когда вы запрашивали эту страницу, поэтому вы никогда не увидите ценности, которые вы только что сохранили

На странице man здесь http://php.net/set_cookie вы можете увидеть:

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

Это потому, что setcookie не изменяет переменную $ _COOKIE. Вы должны использовать setcookie и в то же время установить соответствующее значение в $ _COOKIE

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

Вместо этого вы можете попробовать использовать $_SESSION – просто поменяйте свои ссылки на $_COOKIE на $ _SESSION.

В противном случае попробуйте явно проверить, была ли только что отправлена ​​форма, и установить стиль на основе только что представленных значений.

Добавляя к sulotion ShogunArts.de, когда вы setcookie() , эта «команда» должна быть отправлена ​​в браузер сначала через HTTP-заголовки. То же самое применяется при попытке доступа к супер-глобальному $_COOKIE он не будет содержать значение cookie, если оно не будет возвращено браузером также через HTTP-заголовки.

Вот что происходит:

  1. Запрошенная страница (в браузере еще нет cookie)
  2. setcookie() .
  3. Сценарий завершен, и теперь он будет ОТВЕТИТЬ в браузер, сообщая ему, чтобы установить cookie.
  4. Когда страница снова открывается, когда браузер имеет файл cookie, он отправит его вместе с запросом.
  5. Теперь, когда PHP получил запрос с файлом cookie, он устанавливает $_COOKIE и теперь вы можете получить к нему доступ со своим скриптом.

Спросите, установлен ли файл cookie:

 if(isset($_COOKIE["TestCookie"])) $recolor = $_COOKIE["TestCookie"]; else $recolor = $color;