Необходимо сохранять информацию о пользователе во время его путешествия по сайту.
Для этого предназначен модуль сеанса. Функция session_start() инициализирует сеанс, а заведение элемента в глобальном массиве $_SESSION указывает PHP, чтобы он отслеживал соответствующую переменную.
session_start();
$_SESSION[' visits ']++;
print ' You have visited here ' .$_SESSION['visits']. ' times. ';
Для того чтобы сеанс начинался автоматически при каждом обращении к сценариям сайта, надо установить опцию session.auto_start в 1
в файле php.ini. При этом отпадает необходимость в вызове функции
session_start().
Функции сеанса отслеживают пользователей, посылая им cookies со
случайно сгенерированным идентификатором сеанса. Если PHP определяет, что пользователь не принимает cookie с идентификатором сеанса, то он автоматически добавляет идентификатор в URL и формы.
print '<a href="train.php">Take the A Train';
Если сеансы разрешены, но пользователь не принимает cookies, то строка, посылаемая броузеру, может выглядеть примерно так:
<a href="train.php?PHPSESSID=2eb89f3344520d11969a79aea6bd2fdd">Take the A
Train
В этом примере имя сеанса PHPSESSID, а идентификатор сеанса равен eb89f3344520d11969a79aea6bd2fdd. PHP добавляет их к URL, и они вместе передаются следующей странице. Формы модифицируются так, чтобы включить скрытые элементы, которые передают идентификатор сеанса. Перенаправления в заголовках Location автоматически не модифицируются, поэтому необходимо добавить к ним идентификатор сеанса с помощью константы SID:
$redirect_url = ' http://www.example.com/airplane.php ';
if (defined(' SID ') && (! isset($_COOKIE[session_name()]))) {
$redirect_url .= ' ? ' . SID;
}
header(" Location: $redirect_url ");
Функция session_name() возвращает имя cookie, в котором хранится
идентификатор сеанса, поэтому данный код добавляет константу SID
к переменной $redirect_url, только если константа определена, а cookie
сеанса не установлен.
По умолчанию PHP хранит данные сеанса в файлах в каталоге /tmp на
сервере. Каждый сеанс хранится в своем собственном файле. Для того
чтобы изменить каталог, в который записываются файлы, установите
значение конфигурационной опции session.save_path в файле php.ini,
соответствующее новому каталогу. Для изменения каталогов можно
также вызвать функцию session_save_path() с новым каталогом, но это
надо делать перед обращением к любой переменной сеанса.
Документацию по функции session_start() на http://www.php.net/session-start, по функции session_save_path() на http://www.php.net/session-save-path; раздел «Sessions» в руководстве на http://www.php.net/session, описывающий модуль сеансов и его многочисленные параметры конфигурации, которые помогают управлять длительностью сеанса или способом их кэширования.