Учебники

11) Печенье и сессии

Что такое Cookie?

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

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

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

Большинство веб-сайтов в Интернете отображают элементы из других доменов, таких как реклама. Домены, обслуживающие эти элементы, также могут устанавливать свои собственные куки. Они известны как сторонние куки.

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

В большинстве веб-браузеров есть варианты отключения куки-файлов, куки-файлов третьих сторон или обоих.

Если это так, то PHP отвечает, передавая маркер cookie в URL.

Диаграмма, показанная ниже, иллюстрирует работу файлов cookie.

PHP Cookies и PHP сессия

Вот,

1) Пользователь запрашивает страницу, на которой хранятся куки

2) Сервер устанавливает куки на компьютере пользователя

3) Другие запросы от пользователя вернут имя и значение куки

В этом уроке вы узнаете

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

  • HTTP протокол без сохранения состояния; Файлы cookie позволяют нам отслеживать состояние приложения, используя небольшие файлы, хранящиеся на компьютере пользователя.

    Путь, в котором хранятся файлы cookie, зависит от браузера.

    Internet Explorer обычно хранит их в папке Temporal Internet Files.

  • Персонализация взаимодействия с пользователем — это достигается путем предоставления пользователям возможности выбирать свои предпочтения.

    Запрашиваемые страницы, которые следуют, персонализированы на основе установленных предпочтений в файлах cookie.

  • Отслеживание страниц, посещенных пользователем

Создание куки

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

<?php

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

?>

ВОТ,

Примечание: функция 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

PHP Cookies и PHP сессия

Примечание: только пустой массив был отображен

  • Шаг 2 — перейдите по URL-адресу http: //localhost/phptuts/cookies.php

PHP Cookies и PHP сессия

  • Шаг 3 — Вернитесь на первую вкладку и нажмите кнопку обновления.

PHP Cookies и PHP сессия

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

Удалить куки

  • Если вы хотите уничтожить куки до истечения срока их действия, то вы должны установить время истечения времени, которое уже прошло.
  • Создайте новый файл с именем 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-теги будут отправлены в браузер.