Иногда необходимо сохранять такую информацию о пользователе, которую записывать в сессии и хранить на сервере необязательно (а тем более сохранять в базе данных).
Например, названия последних диалогов, последние открытые страницы сайта и т.п. Но сохранять такую информацию полезно, это сделает посещение Вашего сайта для пользователей более приятным.
Для разгрузки сервера можно сохранять эту информацию на компьютере пользователя, с помощью cookie
Cookie сохраняются на протяжении указанного времени. Они могут храниться на компьютере пользователя до нескольких лет!
Удобнее работать с cookie в JS, но мы попробуем их использовать и в PHP.
Для сохранения cookie в PHP есть функция setcookie
Аргументы все понятные, кроме, наверное, трёх последних:
cookiePath - путь в котором будут доступны cookie на сайте. Если указан "/", то cookie будет доступен на всём сайте. Если указать какую-либо папку, то их можно будет получить только в этой и вложенных папок.
cookieDomain - указывается название внешних сайтов на которых будет доступно получение этих cookie.
cookieHttpOnly - если указывается 1/true, то cookie будут доступны только через HTTP-протокол
Все параметры в setcookie необязательные, кроме названия сохраняемой переменной.
Поэтому возможна короткая запись:
И даже такая:
Теперь о том как получить cookie
Для этого есть суперглобальный массив $_COOKIE.
Выводим массив и смотрим что там есть:
Для получения нашего cookie делаем следующее :
ВАЖНО : setcookie() можно вызывать только до вывода текста на страницу, т.к. cookie отправляются вместе с заголовками. На эту функцию действует тоже ограничение, что и на header()
Спасибо за внимание.
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 ); |
1 | setcookie( "cookie_name" , "cookie value" ); |
1 | setcookie( "cookie_name" ); |
1 2 3 4 5 | <pre> <?php print_r( $_COOKIE ); ?> </pre> |
1 | echo $_COOKIE [ "cookie_name" ]; |