базовый курс

ГРУППА КУРСА

Сессии в 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
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 записываются данные из сессии. Если переменные содержат значения, значит это не первый запуск скрипта и значения выводятся на экран. А если переменные не содержат значений, значит в сессии нет данных, потому что этот скрипт ещё не запускался во время текущего визита пользователя. Создайте страницу, со ссылкой на этот скрипт и пройдите по этой ссылке. При первом переходе скрипт выведет надпись: Первый визит на страницу. Если в браузере нажать кнопку "Назад" и снова пройти по ссылке, то будет указано время предыдущего запуска. Сессия будет уничтожена при выходе с сайта. На локальном сервере для этого нужно полностью закрыть браузер. Теперь, если Вы заново запустите скрипт, то в сессии не будет данных.

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

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