 
Суперглобальный массив $_SESSION
При посещении сайта для каждого посетителя или пользователя заводится отдельная сессия. Благодаря чему, страницы отображаются с учетом предыдущих запросов, даже если никакого запроса вместе с новой ссылкой не посылалось.
Массив $_GET непосредственно для управления отображением страниц не годится. Допустим, посетитель отсортировал таблицу, затем щелкнул по ссылке на другую страницу и снова вернулся на предыдущую. После этого таблица окажется не сортированной, так как команды на сортировку на этот раз не было. Для того, чтобы команды сохранялись, все переменные $_GET (кроме $_GET['block']) переписываются в суперглобальный массив $_SESSION под теми же именами (индексами), например: $_SESSION['sort'].
Алгоритм отображения страницы
- Вы щелкнули по ссылке.
- Параметры запроса сохраняются в суперглобальном массиве $_SESSION.
- Согласно всем предыдущим запросам, хранящимся в массиве $_SESSION, из базы данных извлекаются данные всех блоков страницы.
- Если у блоков есть обработчики, то данные блока поступают на обработчик.
- Данные (в том числе, обработанные) подставляются в шаблон.
- Отображается страница.
Полный список переменных сессии, которые могут сохраняться на сервере в режиме простого отображения страницы:
Переменная сессии | Назначение |
$_SESSION['single'][$block] | Идентификатор единственной записи, подлежащей извлечению |
$_SESSION['sort'][$block][$field]['order'] | Направление сортировки, asc (нарастание) или desc (убывание) |
$_SESSION['pick'][$block][$field]['lt'] | Условия, накладываемые на данные при условной выборке. |
$_SESSION['pick'][$block][$field]['le']
| $_SESSION['pick'][$block][$field]['eq']
| $_SESSION['pick'][$block][$field]['ge']
| $_SESSION['pick'][$block][$field]['gt']
| $_SESSION['pick'][$block][$field]['ne']
| $_SESSION['part'][$block]['num'] | Номер отображаемой части блока |
$_SESSION['part'][$block]['numOfParts'] | Число частей, на которое разбито отображение записей блока |
$_SESSION['part'][$block]['limit'] | Ограничение на число отображаемых записей. Совпадает с параметром дескриптора: $params['part']['limit']. Однако, если был url-запрос limit, то его значение становится равным $_SESSION['limit'][$block] |
$_SESSION['limit'][$block] | Ограничение на число отображаемых записей (перебивает аналогичный параметр, заданный в дескрипторе) |
$_SESSION['search'][$block]['searchWords'][$field][][] | Массив поисковых слов отдельно для каждого поля (при поисковом запросе). |
$_SESSION['search'][$block]['atBeginning'] | Поиск только в начале слов.
|
где $block - идентификатор блока, $field - номер поля таблицы данных. Из списка видно, что запрос block отдельно не сохраняется, так как на странице находится не один блок.
Сравните переменные сессии с переменными, доступными в шаблоне.
- Допустим, мы щелкнули по кнопке подтверждения формы.
- Проверяется наличие обработчика обновления для данного шаблона, и если он имеется, то выполняется.
- Если идентификатор записи и идентификатор блока в сессии существуют, то данные формы поступают в базу данных и обновляют запись или создают новую.
- Происходит редирект на ту же страницу
Если применить запрос page=.., то можно открыть любую другую страницу.
- Страница отображается обычным образом, как это было описано выше в параграфе "Алгоритм отображения страницы". Если у шаблона блока имеется обработчик вывода, то он выполняется.
Другие переменные
Переменная сессии | Назначение |
$_SESSION['userId'] | Идентификатор пользователя (прошедшего авторизацию) |
|