Блог

Куки или печеньки в PHP

11 сентября 2022

Поговорим о куках, куки, cookie, cookies в языке программирования PHP, что такое и зачем они нужны. Поговорим о куках, они же куки, cookie, cookies.

Куки в PHP
Куки в PHP

Куки (Cookie) — это небольшой файл размером не более 4 КБ, который веб-сервер хранит на компьютере клиента.

После установки cookie все последующие запросы страниц возвращают имя и значение cookie.

Файл cookie может быть прочитан только с того домена, на котором он был создан. Например, файл cookie, установленный в домене www.uzabila.com, не может быть прочитан из домена career.uzabila.com.

На большинстве сайтов в Интернете могут отображаются элементы от других доменов, например реклама. Домены, обслуживающие эти элементы, могут также устанавливать свои собственные файлы cookie. Они известны как файлы cookie третьих лиц или сторонние куки.

Примечание. Информация о куки есть в официально документации PHP на этой странице.

Куки, созданные пользователем, могут быть видны только ему. Другие пользователи не могут видеть значения куки.

Большинство веб-браузеров имеют опции для отключения cookies, сторонних cookies или и тех, и других. В этом случае PHP отвечает передачей токена cookie в URL.

Вкратце, давайте посмотрим как работают куки:

  1. Пользователь запрашивает страницу, на которой хранятся файлы cookie
  2. Сервер устанавливает cookie на компьютере пользователя
  3. Другие запросы страницы от пользователя будут возвращать имя и значение cookie.

Зачем и когда использовать куки в PHP?

Вариантов использования куки на сайтах множество. Остановимся на основных.

  • Http — это протокол без статических данных или протокол без сохранения состояния; куки позволяют нам отслеживать состояние приложения с помощью небольших файлов, хранящихся на компьютере пользователя. Путь, по которому хранятся файлы cookie, зависит от браузера. Internet Explorer обычно хранит их в папке Temporal Internet Files.
  • Персонализация пользовательского опыта — достигается за счет того, что пользователи могут выбирать свои предпочтения. Запрашиваемые последующие страницы персонализируются на основе установленных предпочтений в файлах cookie.
  • Отслеживание страниц, посещаемых пользователем.

Теперь рассмотрим основной синтаксис, используемый для создания cookie.

<?php
setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

Разберем синтаксис более подробно.

В php setcookie — это функция PHP, используемая для создания cookie.

cookie_name — это имя cookie, которое сервер будет использовать при извлечении его значения из переменной массива $_COOKIE. Оно является обязательным.

cookie_value — это значение cookie и поле является также обязательным.

[expiry_time] является необязательным; его можно использовать для установки времени действия cookie, например, 1 час. Время устанавливается с помощью функций PHP time() плюс-минус число секунд, больше 0, т.е. time() + 3600 для 1 часа.

[cookie_path] является необязательным; его можно использовать для задания пути к cookie на сервере. Прямая косая черта или слеш «/» означает, что куки будет доступна на всем домене. Подкаталоги ограничивают доступ файлов cookie к поддомену.

[domain] является необязательным, он может быть использован для определения иерархии доступа к cookie, например, www.cookiedomain.com означает весь домен, а www.sub.cookiedomain.com ограничивает доступ к cookie доменом www.sub.cookiedomain.com и его поддоменами. Обратите внимание, что можно иметь поддомен поддомена, если общее количество символов не превышает 253.

[secure] является необязательным, по умолчанию false. Он используется для определения того, отправляется ли cookie по протоколу https, если установлено значение true, или http, если установлено значение false.

[Httponly] является необязательным. Если он установлен в true, то только языки сценариев на стороне клиента, т.е. JavaScript, не смогут получить к ним доступ.

Примечание. Функция php setcookie должна выполняться перед открывающим тегом HTML.

Давайте теперь рассмотрим пример, в котором используются файлы cookie.

Мы создадим базовую программу, которая позволит нам хранить имя пользователя в файле cookie, срок действия которого истекает через 60 секунд.

Ниже в коде показана реализация приведенного выше примера. Создадим файл cookies.php на сервере, куда поместим данный код:

<?php
setcookie("user_name", "Uzabila", time()+ 60,'/'); // expires after 60 seconds
echo 'the cookie has been set for 60 seconds'; // Куки установлены на 60 секунд

После того как мы откроем файл на сервере программа выведет на экран:

the cookie has been set for 60 seconds

Создадим еще один файл с именем cookies_read.php в котором разместим следующее:

<?php
print_r($_COOKIE); // вывести содержимое переменной массива cookie 

Обращение к данному файлу выведет на экран:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Uzabila )
Примечание. $_COOKIE — это встроенная в PHP суперглобальная переменная.

Эта переменная содержит имена и значения всех установленных куки. Количество значений, которые может содержать массив $_COOKIE зависит от объема памяти, установленного в php.ini. По умолчанию это значение равно 1 ГБ.

Давайте теперь протестируем наше мини-приложение. Предположим, что вы сохранили свои PHP-файлы в папке phptuts на локальном сервере.

Откройте веб-браузер и введите URL-адрес http://localhost/phptuts/cookies_read.php. На данный момент отображается только пустой массив.

Перейдите на URL http://localhost/phptuts/cookies.php.

Теперь мы увидим предупреждение: «the cookie has been set for 60 seconds«.

Переключитесь обратно на первую вкладку (с именем cookies_read.php ), затем нажмите кнопку обновления страницы браузера. Теперь мы видим, что массива не пустой:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Uzabila )

Далее ждем более 60 секунд, обновляем страницу и убеждаемся, что массив снова стал пустым.

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

Если вы хотите уничтожить файл cookie до истечения срока его действия, то установите время истечения срока действия на время, которое уже прошло.

Создайте новый файл с именем cookie_destroy.php со следующим кодом:

<?php
setcookie("user_name", "Guru99", time() - 360,'/');

Повторите предыдущие шаги с примером об извлечении значений cookie. После чего откройте URL http://localhost/phptuts/cookie_destroy.php. Далее перейдите на URL http://localhost/phptuts/cookies_read.php и проверьте какой результат отображается.

Cookies — это небольшие файлы, сохраненные на компьютере пользователя. Cookies могут быть прочитаны только из домена, выдавшего их. Cookies могут иметь время действия, если оно не установлено, то срок действия cookie истекает при закрытии браузера.

И куки и сессии должны быть запущены до того, как в браузер будут отправлены какие-либо HTML-теги.

Опубликовано 11 сентября 2022 в 00:12
Обновлено 9 января 2024 в 14:12
Категория: Блог
Теги:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Реклама

Связь со мной

uzabila@yandex.ru