Правда о сессиях - Управление сессией

ОГЛАВЛЕНИЕ

Управление сессией

До сих пор я обсуждал состояние — несколько низкоуровневое
понятие, касающееся привязки одной HTTP-транзакции к другой. Более
полезной возможностью, с которой вы, вероятно, знакомы, является управление сессией.
Управление сессией не только основывается на возможности сохранения
состояния, но также нуждается в сохранении клиентских данных для каждой
пользовательской сессии. Эти данные в большинстве случаев называют сессионными данными,
потому что они связаны с конкретной сессией пользователя. Если вы
используете встроенный в PHP механизм управления сессией, сессионные
данные сохраняются для вас (по умолчанию — в директории /tmp) и доступны в суперглобальном массиве $_SESSION.
Простой пример использования сессий касается сохранения сессионных
данных от одной страницы к другой. Листинг 1, представляющий
скрипт session_start.php, показывает, как это может быть сделано.

Листинг 1


<?php
    session_start
();
    
$_SESSION['foo'] = 'bar';
    <
a href="session_continue.php">session_continue.php</a>

?>

Если пользователь кликнет по ссылке в session_start.php {Б.С. начинающим: конечно, имеется в виду по ссылке на сформированной этим скриптом странице.}, принимающий скрипт session_continue.php получит возможность доступа к той же сессионной переменной $_SESSION['foo']. Это показано в листинге 2.
Листинг 2


<?php
    session_start
();
    echo
$_SESSION['foo']; /* bar */
?>

{Б.С. начинающим: чтобы произошло вышеописанное, второй скрипт
должен получить идентификатор сессии, сгенерированный первым скриптом,
для чего должна быть включена директива session.use_trans_sid или у пользователя должны быть разрешены куки.}

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