Сессии PHP (session_start, session_destroy, $_SESSION)

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

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

Создание сессии и работа с ней

Давайте попробуем инициализировать (начать) PHP сессию и записать в неё какие-нибудь данные. Для этого воспользуемся функцией с говорящим названием session_start. А затем запишем в сессию какие-нибудь данные:
<?php 
   session_start();
   $_SESSION['text'] = 'Тише, мыши, кот на крыше';

   echo '<pre>';
   print_r($_SESSION);
   echo '</pre>';
?>
Переменная $_SESSION является массивом. Если интересно, что в ней находится, то всегда можно распечатать этот массив через print_r. Результат выполнения кода из примера выше будет таким:
Array
(
   [text] => Тише, мыши, кот на крыше
)
Чтение значений массива $_SESSION происходит точно также, как и чтение элементов любого другого массива.

Сессии - это удобный инструмент, потому что данные сохраняются вне зависимости от загрузки страницы сайта. Приведём простейший пример, демонстрирующий это. Сделаем скрипт, который считает, сколько раз была перезагружена страница с кодом:
<?php 
   session_start();
   if (!isset($_SESSION['reload_counter'])) {
      $_SESSION['reload_counter'] = 1;
   }else{
      $_SESSION['reload_counter'] ++;
   }

   echo 'Эта страница была перезагружена ' . $_SESSION['reload_counter'] . ' раз';
?>
Теперь перезагрузим страницу с этим скриптом и увидим, как счётчик увеличивает своё значение.

Чтобы удалить данные, записанные в $_SESSION, используйте те же механизмы, которые используете для массивов, то есть:
<?php 
   unset($_SESSION['reload_counter']);
?>

Длительность сессии

Длительность хранения данных в сессии зависит от настроек PHP. Обычно составляет примерно 30 минут. Вы можете самостоятельно проверить длительность, получив его из настроек PHP командой:
<?php 
   echo ini_get('session.gc_maxlifetime');
?>
В результате выполнения этого кода, будет выведена длительность времени жизни сессии в секундах. После окончания этого времени сессия и все данные будут удалены.
Вы можете увеличить время жизни сессии, установив значение gc_maxlifetime в настройках PHP или прописав "php_value session.gc_maxlifetime количество_секунд" в файле .htaccessхостингах.

Файлы сессий

В настройках Apache при создании задаётся путь к директории, которой будут хранится сессии сайта. Эта директория может быть похожа на /tmp/php_sessions/ваш_домен/. Если на сайте существует функционал сессий, то можно перейти в эту директорию и обнаружить там файлы. В этих файлах будут находиться сериализованные данные всех сессий и все значения, которые записывались в сессию. Эти файлы постепенно удаляются по мере истечения срока жизни сессий.

Завершение сессии

Если сессия не нужна, то необходимо закончить её. Эта задача обычно повялется в случае, если пользователь выходит из своей учётной записи на сайте. Тогда поможет функция session_destroy:
<?php 
   session_destroy();
?>
После выполнения этого кода сессия будет закрыта.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: