English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В данном руководстве вы узнаете, как использовать PHP сеанс для временного хранения данных на сервере.
Хотя вы можете использовать cookie для хранения данных, у них есть некоторые安全问题. Поскольку cookie хранятся на компьютере пользователя,攻击ер может легко изменить содержимое cookie, чтобы вставить вредоносные данные в ваше приложение, что может повредить ваше приложение.
Кроме того, при каждом запросе URL браузера к серверу, все данные cookie автоматически отправляются в запрос. Это означает, что если вы храните 5 cookie на системе пользователя, каждый размером 4 КБ, то браузеру необходимо загружать 20 КБ данных при каждом просмотре страницы, что может повлиять на производительность вашего сайта.
Вы можете решить эти проблемы с помощью PHP сеанса. PHP сеанс хранит данные на сервере, а не на компьютере пользователя. В среде, основанной на сеансе, каждый пользователь идентифицируется уникальным номером, называемым идентификатором сеанса или SID. Этот уникальный идентификатор сеанса используется для связывания каждого пользователя с его данными на сервере (например, электронной почтой, сообщениями и т.д.).
Совет:Идентификатор сеанса генерируется 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"]; ?>
PHP-код в предыдущем примере генерирует следующий вывод.
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).