Что такое Cookie?
Файл cookie — это небольшой файл с максимальным размером 4 КБ, который веб-сервер хранит на клиентском компьютере.
После того, как cookie был установлен, все последующие запросы страницы возвращают имя и значение cookie.
Файл cookie может быть прочитан только с того домена, с которого он был создан. Например, файл cookie, установленный с использованием домена www.guru99.com, не может быть прочитан с домена career.guru99.com .
Большинство веб-сайтов в Интернете отображают элементы из других доменов, таких как реклама. Домены, обслуживающие эти элементы, также могут устанавливать свои собственные куки. Они известны как сторонние куки.
Файл cookie, созданный пользователем, может быть виден только им. Другие пользователи не могут видеть его значение.
В большинстве веб-браузеров есть варианты отключения куки-файлов, куки-файлов третьих сторон или обоих.
Если это так, то PHP отвечает, передавая маркер cookie в URL.
Диаграмма, показанная ниже, иллюстрирует работу файлов cookie.
Вот,
1) Пользователь запрашивает страницу, на которой хранятся куки
2) Сервер устанавливает куки на компьютере пользователя
3) Другие запросы от пользователя вернут имя и значение куки
В этом уроке вы узнаете
- Почему и когда использовать куки?
- Создание куки
- Получение значения Cookie
- Удалить куки
- Что такое сессия?
- Почему и когда использовать сеансы?
- Создание сеанса
- Уничтожение переменных сеанса
Почему и когда использовать куки?
-
HTTP протокол без сохранения состояния; Файлы cookie позволяют нам отслеживать состояние приложения, используя небольшие файлы, хранящиеся на компьютере пользователя.
Путь, в котором хранятся файлы cookie, зависит от браузера.
Internet Explorer обычно хранит их в папке Temporal Internet Files.
-
Персонализация взаимодействия с пользователем — это достигается путем предоставления пользователям возможности выбирать свои предпочтения.
Запрашиваемые страницы, которые следуют, персонализированы на основе установленных предпочтений в файлах cookie.
- Отслеживание страниц, посещенных пользователем
Создание куки
Давайте теперь посмотрим на основной синтаксис, используемый для создания куки.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
ВОТ,
- Php «setcookie» — это функция PHP, используемая для создания куки.
- «Cookie_name» — это имя cookie, которое сервер будет использовать при получении его значения из переменной массива $ _COOKIE. Это обязательно.
- «Cookie_value» является значением cookie и его обязательным
- «[Expiry_time]» является необязательным; это может быть использовано для установки времени истечения для куки, например, 1 час. Время устанавливается с помощью функций PHP time () плюс или минус количество секунд больше 0, т.е. время () + 3600 в течение 1 часа.
- «[Cookie_path]» является необязательным; он может быть использован для установки пути cookie на сервере. Косая черта «/» означает, что файл cookie будет доступен на всем домене. Подкаталоги ограничивают доступ файлов cookie к поддомену.
- «[Домен]» является необязательным, его можно использовать для определения иерархии доступа к файлам cookie, т. Е. Www.cookiedomain .com означает весь домен, тогда как www.sub.cookiedomain.com ограничивает доступ к файлам cookie для www.sub.cookiedomain.com и его подчиненного элемента. домены. Обратите внимание, что возможно иметь поддомен поддомена, если общее количество символов не превышает 253 символов.
- «[Безопасный]» является необязательным, по умолчанию используется значение false. Он используется для определения того, отправляется ли cookie через https, если для него установлено значение true, или для http, если для него установлено значение false.
- «[Httponly]» необязательно. Если установлено значение true, то только клиентские языки сценариев, т.е. JavaScript не могут получить к ним доступ.
Примечание: функция cookie набора php должна быть выполнена перед открывающим тегом HTML.
Давайте теперь посмотрим на пример, который использует куки.
Мы создадим базовую программу, которая позволит нам сохранять имя пользователя в файле cookie, срок действия которого истекает через десять секунд.
Приведенный ниже код демонстрирует реализацию приведенного выше примера «cookies.php».
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Вывод:
the cookie has been set for 60 seconds
Получение значения Cookie
Создайте другой файл с именем «cookies_read.php» со следующим кодом.
<?php print_r($_COOKIE); //output the contents of the cookie array variable ?>
Вывод:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Примечание: $ _COOKIE — это встроенная в суперглобальную переменную PHP.
Он содержит имена и значения всех установленных файлов cookie.
Количество значений, которые
Массив $ _COOKIE может содержать в зависимости от размера памяти, установленного в php.ini.
Значение по умолчанию составляет 1 ГБ.
Тестирование нашего приложения.
Предположим, вы сохранили свои файлы PHP в папке phptus.
- Шаг 1 — откройте веб-браузер и введите URL-адрес http: //localhost/phptuts/cookies_read.php
Примечание: только пустой массив был отображен
- Шаг 2 — перейдите по URL-адресу http: //localhost/phptuts/cookies.php
- Шаг 3 — Вернитесь на первую вкладку и нажмите кнопку обновления.
Подождите минуту, затем снова нажмите кнопку обновления. Какие результаты вы получили?
Удалить куки
- Если вы хотите уничтожить куки до истечения срока их действия, то вы должны установить время истечения времени, которое уже прошло.
- Создайте новый файл с именем cookie_destroy.php со следующим кодом
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Повторите шаги с 1 по 3 из приведенного выше раздела о получении значений cookie.
- Откройте URL-адрес http: //localhost/phptuts/cookie_destroy.php
- Переключитесь на URL http: //localhost/phptuts/cookies_read.php, какие результаты он отображает?
Что такое сессия?
- Сеанс — это глобальная переменная, хранящаяся на сервере.
- Каждому сеансу присваивается уникальный идентификатор, который используется для извлечения сохраненных значений.
- Каждый раз, когда создается сеанс, cookie, содержащий уникальный идентификатор сеанса, сохраняется на компьютере пользователя и возвращается при каждом запросе к серверу. Если браузер клиента не поддерживает файлы cookie, в URL отображается уникальный идентификатор сеанса php.
- Сеансы могут хранить относительно большие данные по сравнению с файлами cookie.
- Значения сеанса автоматически удаляются при закрытии браузера. Если вы хотите хранить значения постоянно, то вы должны сохранить их в базе данных.
- Как и переменная массива $ _COOKIE, переменные сеанса хранятся в переменной массива $ _SESSION. Как и файлы cookie, сеанс должен начинаться перед любыми тегами HTML.
Почему и когда использовать сеансы?
- Вы хотите более надежно хранить важную информацию, такую как идентификатор пользователя, на сервере, где злоумышленники не могут с ними справиться.
- Вы хотите передать значения с одной страницы на другую.
- Вам нужна альтернатива куки в браузерах, которые не поддерживают куки.
- Вы хотите хранить глобальные переменные эффективным и более безопасным способом по сравнению с передачей их в URL
- Вы разрабатываете приложение, такое как корзина для покупок, которое должно временно хранить информацию объемом более 4 КБ.
Создание сеанса
Чтобы создать сеанс, вы должны сначала вызвать функцию PHP session_start, а затем сохранить ваши значения в переменной массива $ _SESSION.
Давайте предположим, что мы хотим знать, сколько раз страница была загружена, мы можем использовать сеанс для этого.
Код ниже показывает, как создавать и извлекать значения из сессий
<?php session_start(); //start the PHP_session function if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
Вывод:
You are visitor number 1
Уничтожение переменных сеанса
Функция session_destroy () используется для уничтожения целых переменных сессии Php.
Если вы хотите уничтожить только один элемент сеанса, вы используете функцию unset ().
Код ниже показывает, как использовать оба метода.
<?php session_destroy(); //destroy entire session ?>
<?php unset($_SESSION['product']); //destroy product session item ?>
Session_destroy удаляет все данные сеанса, включая файлы cookie, связанные с сеансом.
Unset освобождает только отдельные переменные сеанса.
Другие данные остаются нетронутыми.
Резюме
- Файлы cookie — это небольшие файлы, которые сохраняются на компьютере пользователя.
- Cookies могут быть прочитаны только с домена выдачи
- Срок действия файлов cookie может истечь, если он не задан, срок действия файлов cookie истекает при закрытии браузера.
- Сессии похожи на глобальные переменные, хранящиеся на сервере
- Каждому сеансу присваивается уникальный идентификационный идентификатор, который используется для отслеживания переменных для пользователя.
- Как куки, так и сеансы должны быть запущены до того, как любые HTML-теги будут отправлены в браузер.