etxt banner 468x60etxt banner 728x90etxt banner 930x180flexbe banner 468x60flexbe banner 728x90flexbe banner 930x180kwork banner 468x60kwork banner 728x90kwork banner 930x180

Руководство по сессиям в PHP

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

Кроме того, каждый раз, когда браузер запрашивает URL-адрес на сервере, все данные cookie для веб-сайта автоматически отправляются на сервер в запросе. Это означает, что если вы сохранили 5 файлов cookie в системе пользователя, каждый размером 4 КБ, браузеру необходимо загружать 20 КБ данных каждый раз, когда пользователь просматривает страницу, что может повлиять на производительность вашего сайта.

Вы можете решить обе эти проблемы, используя сессии PHP. Сессии PHP хранят данные на сервере, а не на компьютере пользователя. В сессии каждый пользователь идентифицируется с помощью уникального номера, называемого идентификатором сеанса или SID. Этот уникальный идентификатор сеанса используется для связи каждого пользователя с его собственной информацией на сервере, такой как электронные письма, сообщения и т. д.

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

Запуск сессии в PHP

Прежде чем вы сможете сохранить какую-либо информацию в переменных сессии, вы должны сначала ее запустить. Чтобы начать новую сессию, просто вызовите PHP-функцию session_start(). Она создаст новый сеанс и сгенерирует уникальный идентификатор сеанса для пользователя.

Код PHP в приведенном ниже примере просто запускает новую сессию.

<?php
// Начало сессии
session_start();
?>

Функция session_start() сначала проверяет, существует ли уже сессия через проверку наличия идентификатора. Если она его находит, то есть если сессия уже запущена, оно устанавливает переменные сессии, а если нет, она запускает новую сессию, создавая новый идентификатор.

Вы должны вызвать функцию session_start() в начале страницы, то есть до любого вывода, сгенерированного вашим скриптом в браузере, так же, как вы это делаете при установке файлов cookie с помощью функции setcookie().

Хранение и доступ к данным сессии

Вы можете хранить все данные сессии в виде пар ключ-значение в суперглобальном массиве $_SESSION[]. Доступ к сохраненным данным можно получить в течение всей сессии. Рассмотрим следующий сценарий, который создает новую сессию и зарегистрирует две переменные.

<?php
// Начало сессии
session_start();

// Хранение данных сессии
$_SESSION["firstname"] = "Peter";
$_SESSION["lastname"] = "Parker";
?>

Чтобы получить доступ к данным сессии, которые мы установили в нашем предыдущем примере с любой другой страницы в том же веб-домене — просто воссоздайте сессию, вызвав session_start(), а затем передайте соответствующий ключ в ассоциативный массив $_SESSION.

<?php
// Начало сессии
session_start();

// Доступ к данным сессии
echo 'Hi, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"]; // Выводит: Hi, Peter Parker
?>

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

Уничтожение сессии

Если вы хотите удалить определенные данные сессии, просто удалите соответствующий ключ ассоциативного массива $_SESSION, как показано в следующем примере:

<?php
// Начало сессии
session_start();

// Удаление данных сессии
if(isset($_SESSION["lastname"])){
    unset($_SESSION["lastname"]);
}
?>

Однако, чтобы полностью уничтожить сессию, просто вызовите функцию session_destroy(). Эта функция не требует аргументов, и один вызов уничтожает все данные сессии.

<?php
// Начало сессии
session_start();

// Уничтожение сессии
session_destroy();
?>

Перед тем, как уничтожить сессию с помощью функции session_destroy(), вам нужно сначала ее создать, если ее еще нет, с помощью функции session_start(), чтобы было что уничтожать.

Каждая сессия PHP имеет значение тайм-аута — продолжительность, измеряемую в секундах, — которая определяет, как долго сессия должна оставаться активной при отсутствии каких-либо действий пользователя. Вы можете настроить этот тайм-аут, изменив значение переменной session.gc_maxlifetime в файле конфигурации PHP (php.ini).

beget banner 480x320beget banner 728x90beget banner 120x600jivo banner 480x320jivo banner 728x90jivo banner 120x600kwork banner 480x320kwork banner 728x90kwork banner 120x600

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 2

Оценок пока нет. Поставьте оценку первым.

Похожие посты

Руководство по загрузке файлов на сервер в PHP

В этом руководстве мы узнаем, как загружать файлы на удаленный сервер с помощью простой HTML-формы и PHP. Вы можете загружать файлы любого типа, например изображения, видео, ZIP-файлы, документы Microsoft Office, PDF-файлы, а также исполняемые файлы и множество других типов файлов. Шаг 1. Создание HTML-формы для загрузки файла В следующем примере будет создана простая HTML-форма, которую…
Подробнее

Руководство по GET и POST запросам в PHP

Веб-браузер связывается с сервером, как правило, с помощью одного из двух HTTP-методов (протокола передачи гипертекста) — GET и POST. Оба метода передают информацию по-разному и имеют разные преимущества и недостатки, как описано ниже. PHP-метод GET В методе GET данные отправляются в виде параметров URL, которые обычно представляют собой строки пар имени и значения, разделенные амперсандами…
Подробнее

Список сообщений об ошибках в PHP

Обычно, когда движок PHP сталкивается с проблемой, препятствующей правильной работе скрипта, он генерирует сообщение об ошибке. Существует шестнадцать различных уровней ошибок, и каждый уровень представлен целым числом и связанной с ним константой. Вот список уровней ошибок: Название Значение Описание E_ERROR 1 Неустранимая ошибка времени выполнения от которой невозможно избавиться. Выполнение скрипта немедленно прекращается E_WARNING 2…
Подробнее