(PHP 4, PHP 5, PHP 7)
session_start — Стартует новую сессию, либо возобновляет существующую
$options
= array()
] ) : boolФункция session_start() создает сессию, либо возобновляет существующую, основываясь на идентификаторе сессии, переданном через GET- или POST-запрос, либо переданный через cookie.
Когда вызвана функция session_start() или когда сессия создается автоматически, PHP вызовет открытие и чтение обработчиков записи сессии. Это могут быть как встроенные обработчики, так и предоставляемые расширениями (например, SQLite или Memcached); или вообще определенный пользователем обработчик, заданный функцией session_set_save_handler(). Callback-функция чтения извлечет все существующие данные сессии (сохраненные в специальном сериализованном виде), десериализует их и занесет в суперглобальный массив $_SESSION, после чего вернет сохраненные данные обработчику сессий PHP.
Для использования именованных сессий, используйте session_name() перед session_start().
Если разрешена опция session.use_trans_sid, функция session_start() регистрирует внутренний обработчик вывода для перезаписи URL.
Если пользователь использует ob_gzhandler или что-то подобное совместно с функцией ob_start(), порядок функций важен для правильного вывода. К примеру, ob_gzhandler должен быть зарегистрирован до старта сессии.
options
Если задано, то должно быть ассоциативным массивом, переопределяющим текущие директивы конфигурации сессий. Ключи не должны иметь префикса session..
В дополнение к обычному набору конфигурационных директив, может быть
добавлена опция read_and_close. Если установлена в TRUE
, то
сессия будет закрыта сразу же после прочтения, теоретически позволяя избежать
блокировки, если данные сессии не будут изменяться.
Функция возвращает TRUE
, если сессия успешно стартована, в противном случае FALSE
.
Версия | Описание |
---|---|
7.1.0 |
session_start() теперь возвращает FALSE и больше не
инициализирует $_SESSION, когда она не смогла запустить сессию.
|
7.0.0 |
Добавлен параметр options .
|
5.3.0 |
Если сессия не смогла стартовать, то возвращается FALSE .
Раньше возвращалось TRUE .
|
Пример #1 page1.php
<?php
// page1.php
session_start();
echo 'Добро пожаловать на страницу 1';
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_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']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);
// Можете тут использовать идентификатор сессии, как в page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>
Пример #3 Переопределение времени жизни cookie
<?php
// Устанавливаем срок действия cookie одному дню.
session_start([
'cookie_lifetime' => 86400,
]);
?>
Пример #4 Чтение и закрытие сессии
<?php
// Если мы знаем, что в сессии не надо ничего изменять,
// мы можем просто прочитать ее переменные и сразу закрыть,
// чтобы не блокировать файл сессии, который может понадобиться другим сессиям
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
Замечание:
Для использования сессий на основе cookie, функция session_start() должна быть вызвана перед выводом чего бы то ни было в браузер.
Замечание:
Используйте zlib.output_compression вместо ob_gzhandler()
Замечание:
Эта функция отсылает несколько заголовков HTTP, в зависимости от настроек. См. описание функции session_cache_limiter() для управления этими заголовками.