Почему я получаю неопределенный индекс при использовании cookie в PHP? - PullRequest
4 голосов
/ 19 января 2011

Если я использую следующий основной код

if (!defined('NAME_COOKIE') )
 define('NAME_COOKIE', "storedusername");

$cookie_domain = ".".$_SERVER['HTTP_HOST'];

setcookie(NAME_COOKIE, $username,time() + (86400),"/", $cookie_domain);
print $_COOKIE[NAME_COOKIE];

Сценарий умирает во время печати с неопределенной ошибкой индекса.Что я делаю не так?

1 Ответ

22 голосов
/ 19 января 2011

Ваши строки:

setcookie(NAME_COOKIE, $username,time() + (86400),"/", $cookie_domain);
print $_COOKIE[NAME_COOKIE];

Здесь происходит то, что вы устанавливаете cookie, что означает, что строка * добавлена ​​ к заголовкам и готова к отправке вместе с вашим контентом.

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

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

Попробуйте представить это следующим образом:

  • setcookie ();
    • (ДОБАВЛЕНО В ОЧЕРЕДЬ)
  • try $_COOKIE
    • (NOT FOUND)
  • отправить содержимое
    • (БРАУЗЕР УСТАНАВЛИВАЕТ COOKIE НА ФАЙЛ)
  • обновить
    • (БРАУЗЕР ОТПРАВЛЯЕТ COOKIE INFO НА СЕРВЕР)
  • php compiles
    • ($ _ COOKIE ЗАГРУЗИЛСЯ ИЗ ДАННЫХ БРАУЗЕРА)
  • try $_COOKIE
    • (FOUND)

Надеюсь, это поможет.

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