PHP - Cookie

14:44 , 18 Июль 2019
PHP - Cookie

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

Обращаю ваше внимание на то, что в куки нужно писать до любого вывода на экран. Замечания по этому поводу аналогичны проблемам с сессиями на PHP.

Написать что-то в куки можно с помощью функции setcookie, которая первым параметром принимает имя этой куки, а вторым - значение:



<?php
	//Запишем в куки с именем test значение 'Тест!':
	setcookie('test', 'Тест!');
 ?>


Однако такие куки долго не живут - только до закрытия браузера.

Продлить время жизни куки можно с помощью третьего параметра, который принимает время (конкретную дату) окончания жизни куки в формате timestamp.

Для тех, кто не помнит, что это за формат - напоминаю: это количество секунд, прошедших с первого января 1970 года.

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

Поэтому третий параметр принято записывать так: настоящий момент времени + N секунд.

Настоящий момент времени в формате timestamp можно получить с помощью функции time. Примеры:



<?php
	//Запишем куку на час (в часе 3600 секунд!):
	setcookie("test","Тест!", time() + 3600); 

	//Запишем куку на день (в сутках 3600*24 секунд!):
	setcookie("test","Тест!", time() + 3600*24); 

	//Запишем куку на месяц (в месяце 3600*24*30 секунд!):
	setcookie("test","Тест!", time() + 3600*24*30); 

	//Запишем куку на год (в году 3600*24*30*365 секунд!):
	setcookie("test","Тест!", time() + 3600*24*30*365); 
 ?>




Куки можно прочитать с помощью глобального массива $_COOKIE.

Давайте прочитаем ранее установленную куку test:


<?php
	//Выведем на экран значение куки test:
	echo $_COOKIE['test'];
?>




Удаляют куки очень хитрым способом - устанавливая дату 'смерти' куки на текущий момент времени:


<?php
	//Удалим куку, установив третий параметр в текущий момент времени:
	setcookie('test', '', time()); 
?>



Вот и все, в принципе синтаксис не сложный, достаточно понять суть. Если будут вопросы — задавайте, отвечу, если смогу :)

Вопросы / Комментарии / Отзывы