Cookie (куки) - это способ долговременного хранения данных в браузере пользователя.

К сожалению, в куки можно сохранить только 4 килобайта информации. Кроме того, есть ограничение на количество кук для данного домена.

Пишем в cookie

Обращаю ваше внимание на то, что в куки нужно писать до любого вывода на экран. Замечания по этому поводу аналогичны проблемам с сессиями на 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

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

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

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

Удаляем cookie

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

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