базовый курс

ГРУППА КУРСА

Сессии в PHP

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

Для работы с сессией используется функция session_start(). Если сессия ещё не создана, то функция создаёт сессию пользователя. А если сессия существует, то происходит подключение к ней. Эта функция должна быть в каждом скрипте, который обращается к сессиям. Она должна идти в коде скрипта раньше вывода любых данных.

После подключения скрипт получает доступ к суперглобальному массиву $_SESSION, в котором содержатся данные сессии. Скрипт может получить значения, содержащиеся в массиве. Также он может добавить в массив новые элементы и изменить значения существующих.

Данные в сессии содержатся до тех пор, пока пользователь не уйдёт с сайта. Когда пользователь закрывает все открытые им страницы сайта, сессия уничтожается и данные, которые в ней содержались, стираются. Существует функция session_destroy, которая также уничтожает сессию.

Для примера создадим скрипт, который будет записывать в сессию время запуска этого скрипта. При следующем запуске, он будет выводить время предыдущего запуска.

+
1
2
<?php
header('Content-type: text/html; charset=utf-8');
3
4
5
6
7
8
9
10
11
12
13
session_start();
$hour = $_SESSION['hour'];
$min = $_SESSION['min'];

if (isset($hour) && isset($min))
echo 'Предыдущий визит '.$hour.' : '.$min;
else
echo 'Первый визит на страницу';

$_SESSION['hour'] = date('H');
$_SESSION['min'] = date('i');

Скрипт работает так: в переменные $hour и $min записываются данные из сессии. Если переменные содержат значения, значит это не первый запуск скрипта и значения выводятся на экран. А если переменные не содержат значений, значит скрипт ещё не запускался во время текущего визита пользователя.

Создайте страницу, со ссылкой на этот скрипт и пройдите по этой ссылке. При первом переходе скрипт выведет надпись:

Первый визит на страницу

Если в браузере нажать кнопку "Назад" и снова пройти по ссылке, то будет указано время предыдущего запуска. Сессия будет уничтожена при выходе с сайта. На локальном сервере для этого нужно полностью закрыть браузер. Теперь, если Вы заново запустите скрипт, то в сессии не будет данных.

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

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