Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше
Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике
31.2. Работа с сессиями в PHP
Если при тестировании примеров из главы или ваших собственных появятся ошибки примерно такого содержания:
Warning: open(/var/state/php/sess_6f71dldbb52fa88481e752af7f384db0, O_RDWR) failed: No such file or directory (2),
это значит, что ваш РHP настроен неправильно. Эта проблема решается следующим образом: нужно записать правильный путь (на существующую директорию), в которой будут храниться сессии, в файле php.ini и перезапустить сервер.
Любой скрипт, который будет использовать переменные (данные) из сессий, должен содержать следующую строку:
Эгакомандаговоритсерверу, что данная страницануждается во всехпеременных, которые связаны с пользователем (браузером). Сервер берет эти переменные из файла либо из БД и делает их доступными. Очень важно открыть сессию до того, как какие-либо данные будут посылаться пользователю. На практике это значит, что функцию session_start() желательно вызывать в самом начале страницы, например так:
<?php
session_start();
?>
<html>
<head>
</head>
...
ВНИМАНИЕ
Если в сессии хранится объект некоторого класса, то описание класса должно быть раньше старта сессии.
После начала сессии можно задавать глобальные переменные. Это элементарно: вызывается функция session_register('var_name'); и переменная $var_name становится доступной на всех страницах, использующих сессию. Модифицируем примеры 31.1 и 31.2.
Пример 31.3. Сессии в РНР. Файл index.php
<?php
// открываем сессию
session_start();
// задаем значение переменной
$а = "Меня задали на index.php";
// регистрируем переменную с открытой сессией
// внимание: названия переменных передаются функции
// session_register() без знака $
session_register("а");
?>
<html>
<body>
Все ОК. Сессию загрузили!
Пройдем, посмотрим, что <а href="page1.php>там...</a>
</body>
</html>
Пример 31.4. Сессии в РНР. Файл page1.php
<?php
// открываем сессию
session_start();
?>
<html>
<body>
<?php
echo $a;
?>
</body>
</html>
При последовательном запуске этих файлов первый скрипт (index.php) выдаст следующий результат:
Все ОК. Сессию загрузили! Пройдем, посмотрим что там... А второй (page1.php) вот это:
Меня задали на index.php
Таким образом, переменная $а теперь доступна на всех страницах данного сайта, на которых запущены сессии.
Другие полезные функции для работы с сессиями:
session_unregister (string) — сессия удаляет значение заданной глобальной переменной;
session_destroy (string) — сессия уничтожается (например, если пользователь покинул систему, нажав кнопку «Выход»);
session_set_cookie_params (int lifetime [, string path [, string domain] ]) — с помощью этой функции можно установить, как долго будет «жить» сессия, задав unix_timestamp определяющий время «смерти» сессии. По умолчанию сессия существует до тех пор, пока клиент не закроет окно браузера.