Cookies. Примеры работы с куками в PHP

C самого начала поста я предположу, что вы уже знаете что такое куки и для чего их можно использовать. И собственно пост рассчитан как раз на тех людей, которые хотят узнать ответ на вопрос «КАК?» — то есть задействовать куки на своём сайте.

Установка куков, простой пример


Чтобы установить куки, вам как минимум нужно задать название, содержание и количество времени, которое эта кука будет существовать.

Например:

$name = 'Миша';
setcookie('my_name',$name,time() + (86400 * 5)); // 86400 = 1 день в секундах

Например тут мы установили куки my_name со значением Миша и в качестве периода её существования задали 5 дней в UNIX-формате времени. time() — текущее время + 86400 * 5 — 5 дней в секундах.

Получение куков через PHP


Теперь, когда куки установлены, давайте попробуем вывести их на сайте (если конечно уже не прошло 5 дней :), для этого мы просто воспользуемся массивом $_COOKIE, который кстати можно просто целиком поглядеть через функцию print_r(), но мы пойдём более правильным путём, проверим ещё, что куки существует.

echo 'Привет, '. ( $_COOKIE['my_name'] != '' ? $_COOKIE['my_name'] : 'Гость') . '!'; // Привет, Миша!

То, что вы видите в круглых скобках, это обычное условие if-else, только в сокращенном виде, в полном виде оно бы выглядело вот так:

if( $_COOKIE['my_name'] != '' )
	echo 'Привет, ' . $_COOKIE['my_name'] . '!';
else
	echo 'Привет, Гость!';

Всё очень просто, верно же?

Функция setcookie() на самом деле имеет и несколько других параметров и пример можно усложнить, включив в неё директорию, домен, защиту и использование только по HTTP. Сейчас объясню.

setcookie('my_name', $name, time() + (86400* 5), '/~mycookie/','truemisha.ru',true,true);

По сути куки та же самая, но мы также назначили её к директории «~mycookie» для домена «truemisha.ru», следующим параметров, равным true разрешили использовать только в SSL-подключении и в следующем параметре, тоже равным true, запретили для использования в JavaScript.

Также имейте ввиду несколько вещей:

  • Несмотря на то, что мы ставим срок истечения действия куков, они могут быть удалены пользователем в любое время.
  • Пользователь может вообще выключить куки в браузере.
  • Куки ни при каких условиях не получится использовать между разными доменами.

Удаление куков


Тут есть несколько моментов.

Первый — если вы установите время истечения куки равным 0, то она будет удалена по истечении сессии в браузера (после закрытия)

Чтобы удалить куку немедленно, вам нужно установить ей пустое значение или срок истечения в прошедшем времени, например:

setcookie ( 'my_name', '', time()-5 );
Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...