Сессии в PHP
Сессии – ключевой элемент, который помогает сайтам 'помнить' пользователя и сохранять его действия. Без них невозможна авторизация, корзины в интернет-магазинах и персонализированные настройки.
Вы узнаете, как работают сессии, зачем они нужны и где применяются. Мы разберёмся, какие технологии стоят за их реализацией, и почему понимание этого важно даже для обычного пользователя.
Что такое сессии в PHP?

Сессия PHP представляет собой способ хранения информации в переменных сессии, которые могут быть использованы для аутентификации на нескольких веб-страницах. В отличие от куков, информация сессии не хранится на компьютере пользователя. Вместо этого сессия создает файл на сервере во временном каталоге.
Эта информация, хранимая на протяжении сессии, доступна для всех веб-страниц ресурса. На сервере расположение временного файла определяется параметром session.save_path в конфигурационном файле php.ini.
При создании PHP-сессии выполняются следующие три действия:
- Когда создается сессия, PHP генерирует уникальный идентификатор, который представляет собой случайную строку из 32 шестнадцатеричных чисел. Идентификатор времени жизни сессии PHP выглядит примерно так: 9c8foj87c3jj973actop1re472e8774;
- Сервер отправляет на компьютер пользователя куки, называемые PHPSESSID, для хранения строки уникального идентификатора сессии;
- Сервер генерирует в указанном временном каталоге файл, который содержит имя уникального идентификатора сессии с префиксом sess _g. sess_9c8foj87c3jj973actop1re472e8774.
Эти установки помогают скрипту PHP извлекать из файла значения переменных сессии. На стороне клиента PHPSESSID содержит идентификатор сессии. Он подтверждает имя файла, который нужно искать в определенном каталоге на стороне сервера, из него переменные сессии могут быть извлечены и использованы для проверки.
Пользователь может завершить сеанс, нажав кнопку выхода из системы, которая вызывает функцию session_destroy(). Когда пользователь закрывает браузер, сессия PHP закрывается автоматически. Иначе сервер завершит сессию по истечении заданного периода времени.
Синтаксис сессий в PHP
При PHP авторизации через сессию она создается с помощью функции session_start() и удаляется с помощью функции session_destroy(). Глобальная переменная PHP, известная под именем $_SESSION, используется для установки значений переменных сессии. Сбросить все значения, установленные для переменных сессии, можно с помощью функции session_unset().
| Синтаксис | Описание |
| session_start(); | Это встроенная функция для создания PHP-сессии. |
| session_destroy(); | Это встроенная функция позволяет удалить сессию PHP. |
| session_unset(); | Это встроенная функция для сброса всех переменных сессии. Она запускается перед функцией session_destroy (). |
| isset (); | Это встроенная функция для проверки, установлены ли переменные сессии или нет. |
| $_SESSION | Это глобальная переменная PHP, которая используется для установки значений переменных сессии. Например, $_SESSION[“userID”] = “php_user”; |
| print_r($_SESSION) | Выводит полный массив переменных сессии и их значений. |
Операции сессии
Мы рассмотрим следующие операции с использованием сессии PHP, а также их примеры.
- Запуск сессии PHP и установка ее переменных сессии: новая сессия PHP запускается с помощью функции session_start(). После того, как сессия была создана, можно установить значения ее переменных сессии с помощью $_SESSION. Мы установили значения для переменных “userID ” - “php_user ” и “password ” - “tutorials ”:
<?php
// Открытие сессии PHP
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP-сессии - создание</title>
</head>
<body>
<?php
// Устанавливаем переменные сессии
$_SESSION["userID"] = "php_user";
$_SESSION["password"] = "tutorials";
echo "<br>Сессия PHP начата и переменные сессии заданы!";
?>
</body>
</html>Результат: в результате запуска приведенного выше PHP-кода на сервере будет выведено следующее сообщение:

- Получение значений переменных сессии PHP: Можно получить значения переменных, которые мы установили во время последней PHP сессии авторизации. Когда мы открываем PHP-сессию в начале каждой страницы (session_start () ), должен указываться код, приведенный ниже. Мы извлекаем и выводим эти значения с помощью глобальной переменной $_SESSION:
<?php
// Открытие сессии PHP
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP-сессия - получение значений</title>
</head>
<body>
<?php
// Вводим переменные сессии PHP, которые мы установили перед этим
echo " ID ползователя - " . $_SESSION["userID"] . ".<br><br>";
echo "Пароль - " . $_SESSION["password"] . ".";
?>
</body>
</html>Результат: когда мы запустим на сервере приведенный выше PHP-код, в результате мы получим следующее сообщение. Выводятся значения переменных сессии, которые мы установили ранее, после создания сессии PHP.

- Обновление значений переменных сессии PHP: Во время сессии можно обновить значения ее переменных. Сначала нам нужно открыть PHP-сессию в начале каждой страницы (session_start () ). В приведенном ниже коде мы обновляем значения переменных “userID ” - “new_php_user ” и “password ” - “education ”.
Можно вывести массив переменных сессии и их значений с помощью функции print_r($ _SESSION), как показано ниже:
<?php
// Открытие сессии PHP
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP-сессия - изменение значений</title>
</head>
<body>
<?php
// Устанавливаем переменные сессии PHP
$_SESSION["userID"] = "new_php_user";
$_SESSION["password"] = "education";
echo "Переменные сессии PHP успешно изменены!<br><br>";
print_r($_SESSION);
?>
</body>
</html>Результат: когда мы запустим на сервере приведенный выше PHP код, мы получим следующее сообщение. В нем будет приведен массив переменных сессии с их новыми значениями:

- Удаление сессии PHP и сброс всех значений переменных сессии: Можно сбросить сессию PHP с помощью функции session_unset() и удалить текущую сессию с помощью функции session_destroy():
<?php
// Открытие сессии PHP
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP-сессия - удаление</title>
</head>
<body>
<?php
// удаляем все переменные сессии PHP
session_unset();
print_r($_SESSION);
// удаляем сессию PHP
session_destroy();
echo "<br><br>Сессия PHP и все переменные сессии были успешно удалены!<br><br>";
?>
</body>
</html>Результат: когда мы запустим на веб-сервере приведенный выше PHP-код, в результате он выведет следующее сообщение:

Заключение
В этой статье мы рассказали о различных функциях для работы с сессиями PHP, их синтаксисе. В отличие от куков, информация сессий хранится на стороне сервера. Благодаря этому сессии PHP более надежны.
Комментарии
Мне понравилась статья про сессии php. Я совершенно новичок и статья помогла понять, что нужно завести переменные для тех значений которые мне нужны. Но, например, мне нужно знать кол-во и время просмотров главной страницы моего сайта, значит я должен установить переменную, типа, : S_SESSION[' main_page'] и всё, дальше моя мысль не работает.