Данные в сессии можно записать на одной странице сайта, а считывать на другой, лишь бы время жизни сессии не истекло между обращениями к разным страницам сайта. Данные сессии хранятся на сервере, поэтому изменить их вручную невозможно.
Создание сессии и работа с ней
Давайте попробуем инициализировать (начать) 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();
?>
После выполнения этого кода сессия будет закрыта.