Как работать с Cookie в PHP

Иногда необходимо сохранять такую информацию о пользователе, которую записывать в сессии и хранить на сервере необязательно (а тем более сохранять в базе данных). Например, названия последних диалогов, последние открытые страницы сайта и т.п. Но сохранять такую информацию полезно, это сделает посещение Вашего сайта для пользователей более приятным. Для разгрузки сервера можно сохранять эту информацию на компьютере пользователя, с помощью cookie Cookie сохраняются на протяжении указанного времени. Они могут храниться на компьютере пользователя до нескольких лет! Удобнее работать с cookie в JS, но мы попробуем их использовать и в PHP. Для сохранения cookie в PHP есть функция setcookie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$cookieName="var_name";
$cookieValue="some text or number";
$cookieLifetime=time()+3600;
$cookiePath="/";
$cookieDomain="some_domain.com";
$cookieHttpOnly=1;
setcookie(
    $cookieName,
    $cookieValue,
    $cookieLifetime,
    $cookiePath,
    $cookieDomain,
    $cookieHttpOnly
);
Аргументы все понятные, кроме, наверное, трёх последних: cookiePath - путь в котором будут доступны cookie на сайте. Если указан "/", то cookie будет доступен на всём сайте. Если указать какую-либо папку, то их можно будет получить только в этой и вложенных папок. cookieDomain - указывается название внешних сайтов на которых будет доступно получение этих cookie. cookieHttpOnly - если указывается 1/true, то cookie будут доступны только через HTTP-протокол Все параметры в setcookie необязательные, кроме названия сохраняемой переменной. Поэтому возможна короткая запись:
1
setcookie("cookie_name", "cookie value");
И даже такая:
1
setcookie("cookie_name");
Теперь о том как получить cookie Для этого есть суперглобальный массив $_COOKIE. Выводим массив и смотрим что там есть:
1
2
3
4
5
<pre>
<?php
    print_r($_COOKIE);
?>
</pre>
Для получения нашего cookie делаем следующее :
1
echo $_COOKIE["cookie_name"];
ВАЖНО : setcookie() можно вызывать только до вывода текста на страницу, т.к. cookie отправляются вместе с заголовками. На эту функцию действует тоже ограничение, что и на header() Спасибо за внимание.
Если статья Вам показалась незаконченной или Вы знаете как её улучшить, пожалуйста сообщите мне e@gohtml.ru