2015-04-17 2 views
2

Это небольшой тест. Я поставил печенье, а затем попытаться получить к нему доступ:setcookie php очень медленный или что случилось?

<?php 
setcookie("t",0,time()+900);  
echo ($_COOKIE['t']+10); 
setcookie("t",0,time()-3600); 
?> 

Когда я запускаю код, я получаю сообщение об ошибке, как показано ниже:

Notice: Undefined index: t in /var/www/x/testcookie.php on line 5 
10 

Почему я не могу получить доступ к куки?

ответ

3

Это не работает. setcookie просто говорит «со следующим http-соединением скажите клиенту (браузеру), чтобы установить этот файл cookie. Браузер отправляет его обратно в следующее http-соединение, если оно еще не истекло. Только тогда оно содержится в массиве $_COOKIE.Так что вы можете проверить, устанавливается в PHP после следующей перезагрузки страницы.

Кроме того, в вашем коде второй куки не будет установлен, потому что выводится что-то в браузере, который запрещен до того setcookie функции (любой функции заголовка).

SetCookie() определяет куки-файл, который будет отправлен вместе с остальными HTTP-заголовками. Как и другие заголовки, файлы cookie должны быть отправлены перед любым выходом вашего скрипта (это ограничение по протоколу). res, что вы помещаете вызовы этой функции перед любым выходом, включая и теги, а также любые пробелы.

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

+0

спасибо, я понял –

0

вам нужно понять, как работает печенье. с setcookie вы отправили заголовок в браузер, который сообщает браузеру хранить файл cookie. И $ _COOKIE superglobal содержит файлы cookie, которые поступают из заголовков пользовательских запросов. поэтому это означает, что переменная, которую вы установили с помощью setcookie, доступна только в $ _COOKIE массиве после обновления, когда она возвращается с заголовками пользовательских запросов. И помните, что набор заголовков вы можете только до выхода, так что второй setcookie не будет работать.

Смежные вопросы