Это маленький тест. Я установил cookie, а затем попытался получить к нему доступ:
<?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
Почему я не могу получить доступ к cookie?
Это не работает таким образом. setcookie
просто говорит «со следующим http-соединением скажите клиенту (браузеру) установить этот cookie. Браузер отправляет его обратно при следующем http-соединении, если срок его действия еще не истек. Только тогда он содержится в $_COOKIE
массив. Таким образом, вы можете проверить, установлен ли он в PHP после перезагрузки следующей страницы.
Кроме того, в вашем коде второй cookie не будет установлен, потому что вы выводили в браузер что-то, что запрещено setcookie
функция (любая функция заголовка).
setcookie () определяет cookie для отправки вместе с остальными заголовками HTTP. Как и другие заголовки, куки должны отправляться до любого вывода из вашего скрипта (это ограничение протокола). Это требует, чтобы вы вызывали эту функцию до любого вывода, включая и теги, а также любые пробелы.
После того, как куки установлены, к ним можно получить доступ на следующей странице
загрузить с $ _COOKIE
вам нужно понять, как работают куки. с помощью setcookie вы отправили заголовок в браузер, который сообщает браузеру хранить куки. И $ _COOKIE superglobal содержит файлы cookie, которые поступают из заголовков пользовательских запросов. таким образом, это означает, что переменная, которую вы установили с помощью setcookie, будет доступна только в массиве $ _COOKIE после обновления, когда она возвращается с заголовками пользовательских запросов. И помните, что устанавливать заголовки можно только перед любым выводом, поэтому второй setcookie не будет работать.