session_start
(PHP 4, PHP 5, PHP 7, PHP 8)
session_start — Начинает или возобновляет сессию
Описание
При вызове функции session_start() или автозапуске сессии
PHP вызовет открытие и чтение обработчиков сохранения сессии. Обработчиком станет
либо встроенный обработчик сохранения по умолчанию, либо обработчик, который установил
PHP-модуль наподобие SQLite или Memcached, или пользовательский обработчик, который определили
функцией session_set_save_handler().
Callback-функция чтения извлечёт существующие данные сессии, которые PHP хранит
в сериализованном виде, и вернёт сохранённые данные обработчику PHP-сессий, который десериализует и занесёт
данные в суперглобальный массив $_SESSION.
Перед вызовом функции session_start()
вызывают функцию session_name(),
чтобы назвать сессию произвольно.
При включённой опции session.use_trans_sid
функция session_start() зарегистрирует внутренний обработчик вывода
для перезаписи URL-адресов.
Порядок вызова функций играет важную роль для правильного вывода данных при передаче в функцию ob_start()
обработчика вывода сжатых данных ob_gzhandler или похожей callback-функции.
Например, обработчик ob_gzhandler требуется
зарегистрировать до начала сессии.
Список параметров
options
-
Параметр принимает ассоциативный массив опций, которые переопределят
текущий набор директив конфигурации сессии.
Префикс session. в названиях опций указывать не требуется.
Стандартный набор директив конфигурации дополняет
опция read_and_close. Со значением true опция
сразу закроет сессию, когда обработчик сохранения сессии прочитает данные, что исключит
ненужную блокировку, когда данные сессии не изменяются.
Возвращаемые значения
Функция возвращает true, если сессия успешно запустилась, иначе false.
Примеры
Базовый пример запуска сессии
Пример #1 page1.php
<?php
// page1.php
session_start();
echo 'Добро пожаловать на страницу 1';
$_SESSION['favcolor'] = 'зелёный';
$_SESSION['animal'] = 'кот';
$_SESSION['time'] = time();
// Работает, если получатель принял сессионный блок данных cookie
echo '<br /><a href="page2.php">page 2</a>';
// Или вывод передают вместе с идентификатором сессии, если требуется
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>
После просмотра страницы page1.php вторая страница —
page2.php — волшебным образом будет содержать данные сессии.
Справочник по работе с функциями сессий
даёт дополнительную информацию о передаче идентификатора сессии,
включая сведения о том, как работает
константа SID.
Пример #2 page2.php
<?php
// page2.php
session_start();
echo 'Добро пожаловать на страницу 2<br />';
echo $_SESSION['favcolor']; // зелёный
echo $_SESSION['animal']; // кот
echo date('Y m d H:i:s', $_SESSION['time']);
// В этом месте можно использовать константу SID, как это делал код страницы page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>
Пример передачи опций в функцию session_start()
Пример #3 Переопределение времени жизни cookie
<?php
// Устанавливаем срок действия cookie равным одному дню
session_start([
'cookie_lifetime' => 86400,
]);
?>
Пример #4 Чтение и закрытие сессии
<?php
// Переменные сессии просто считывают и сразу закрывают сессию,
// если известно, что в сессии не требуется ничего изменять,
// чтобы не блокировать файл сессии, который потребуется другим скриптам, а с ним и другие страницы
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
?>
Примечания
Замечание:
Функцию session_start() требуется вызывать перед выводом данных в браузер,
чтобы работать с сессиями на основе блоков данных cookies.
Замечание:
Вызову функции ob_gzhandler()
лучше предпочесть включение опции zlib.output_compression.
Замечание:
Функция отправляет ряд HTTP-заголовков, состав которых зависит от настроек.
Описание функции session_cache_limiter() рассказывает,
как настроить состав заголовков, которые отправит функция.