Проблема с обнаружением файлов cookie в PHP - PullRequest
0 голосов
/ 30 декабря 2010

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

public function control() {
    $string = 'lolcheck';

    setcookie($string, $string, time() + 120, $this->path, $this->domain);

    if (isset($_COOKIE[ $string ])) return true;
    else return false;
}

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

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

Я что-то упустил?

Ответы [ 3 ]

2 голосов
/ 30 декабря 2010

Cookies не работают таким образом. Когда файл cookie установлен, он недоступен (т. Е. Существует соответствующий ключ $_COOKIE) до следующего запроса.

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

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

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

  • клиент отправляет запрос, содержащий соответствующее Cookie поле заголовка запроса
  • сервер регистрирует $_COOKIE ключ
1 голос
/ 30 декабря 2010

за документы :

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

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

0 голосов
/ 30 декабря 2010

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

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

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