Работа с сессиями в PHP

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

Working-with-Sessions-in-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-кода на сервере будет выведено следующее сообщение:

1-11
  • Получение значений переменных сессии 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.

2-13
  • Обновление значений переменных сессии 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 код, мы получим следующее сообщение. В нем будет приведен массив переменных сессии с их новыми значениями:

3-13
  • Удаление сессии 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-код, в результате он выведет следующее сообщение:

4-11

Заключение

В этой статье мы рассказали о различных функциях для работы с сессиями PHP, их синтаксисе. В отличие от куков, информация сессий хранится на стороне сервера. Благодаря этому сессии PHP более надежны.

Перевод статьи «Learn Working with Sessions in PHP» дружной командой проекта Сайтостроение от А до Я.

19 января 2017 в 13:11
Материалы по теме
{"url":"http://www.fastvps.ru/", "src":"/images/advbanners/fastvps.png", "alt":"Хостинг Fastvps.ru. Наш выбор!"}
Заработок