CONTENT MANAGEMENT SYSTEM
Blox Logo
Blox CMS — блочный метод сайтостроения
.
 
Blox Help

    Документация
    по этому разделу
    находится в работе.
    Перейти в меню.
    ←→

    Суперглобальный массив $_SESSION

    При посещении сайта для каждого посетителя или пользователя заводится отдельная сессия. Благодаря чему, страницы отображаются с учетом предыдущих запросов, даже если никакого запроса вместе с новой ссылкой не посылалось.

    Массив $_GET непосредственно для управления отображением страниц не годится. Допустим, посетитель отсортировал таблицу, затем щелкнул по ссылке на другую страницу и снова вернулся на предыдущую. После этого таблица окажется не сортированной, так как команды на сортировку на этот раз не было. Для того, чтобы команды сохранялись, все переменные $_GET (кроме $_GET['block']) переписываются в суперглобальный массив $_SESSION под теми же именами (индексами), например: $_SESSION['sort'].

    Алгоритм отображения страницы

    1. Вы щелкнули по ссылке.
    2. Параметры запроса сохраняются в суперглобальном массиве $_SESSION.
    3. Согласно всем предыдущим запросам, хранящимся в массиве $_SESSION, из базы данных извлекаются данные всех блоков страницы.
    4. Если у блоков есть обработчики, то данные блока поступают на обработчик.
    5. Данные (в том числе, обработанные) подставляются в шаблон.
    6. Отображается страница.

    Полный список переменных сессии, которые могут сохраняться на сервере в режиме простого отображения страницы:
     Переменная сессии Назначение
    $_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 отдельно не сохраняется, так как на странице находится не один блок.

    Сравните переменные сессии с переменными, доступными в шаблоне.

    Алгоритм обработки публичных записей

    1. Допустим, мы щелкнули по кнопке подтверждения формы.
    2. Проверяется наличие обработчика обновления для данного шаблона, и если он имеется, то выполняется.
    3. Если идентификатор записи и идентификатор блока в сессии существуют, то данные формы поступают в базу данных и обновляют запись или создают новую.
    4. Происходит редирект на ту же страницу
      Если применить запрос page=.., то можно открыть любую другую страницу.
    5. Страница отображается обычным образом, как это было описано выше в параграфе "Алгоритм отображения страницы". Если у шаблона блока имеется обработчик вывода, то он выполняется.

    Другие переменные

     Переменная сессии Назначение
    $_SESSION['userId']Идентификатор пользователя (прошедшего авторизацию)