Сессии 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, покупка SSL сертификатов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: