На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

Использование сессии MaxSite моим скриптом

Вопросы-ответы / 27 декабря 2014

Привет сообществу героев!

Я тут на своем сайте начал делать такой себе "костыль", а именно: пишу свои скрипты и вызываю их через "ушки" на страницы блога. Почти все работает smile

Сейчас понадобилась сессия, посмотрел коды ЦМС-ки, но не понял - могу ли я использовать сессию оттуда?

Прошу помочь - если возможно получение доступа к сессии - как это выполнить?

Под "доступом" я понимаю - записать свои значения в сессию (с моими именами) и прочитать их в нужном месте.

я админ и автор указанного сайта

Сайт

Комментариев: 9
  1. Владимир, не понял что вы имеете в виду под словами «использовать сессию»? В кукисах - это один тип «сессии». А есть ещё getinfo('session'); (точнее $MSO->data['session']; ).

    Если вам нужны были «данные сессии», тогда достаточно сделать в вашем скрипте вызов:

    global $MSO;

    А потом обращаться к ключам. Чтобы посмотреть все доступные ключи сделайте

    pr($MSO);

    Если нужно хранить в сессии свои переменные, то просто посмотрите какие есть в $MSO и задавайте свои так, чтобы не повредить системные.

  2. Спасибо за ответ!

    пока ответа не было, начал использовать $_SESSION...

    Это не противоречит? Или все же лучше $MSO?

  3. Владимир, я не знаю целиком вашей задачи, поэтому и не могу дать исчерпывающий ответ. Подозреваю, что вам просто нужно передавать какие-то значения между разными вызовами ушки. Если задача в этом, то, в принципе, можно использовать любую глобальную php-переменную. Можно использовать и $_SESSION, но очень не желательно, т.к. она системная. Лучше уж тогда на свой страх и риск использовать $MSO, которая принадлежит уровню приложения (движку, а не php интерпретатору).

  4. Да, верно - задача - передавать значения.

    Понял.

    Странно, везде в учебниках в примерах именно $_SESSION... я думал, что она для того и предназначена... Но это другая тема. Перепишу на $MSO.

    Спасибо!

  5. Илья, немного выше Вы написали "Чтобы посмотреть все доступные ключи сделайте"

    pr($MSO);
    "

    Очевидно Вы имели в виду - занятые ключи?

  6. Владимир, что касается моего высказывания по поводу $_SESSION, то оно вызвано неясностью стоящей перед вами задачей. Если у вас стоит задача сохранять и передавать некие значения между ушками в рамках обработки одного запроса, то моё высказывание верно, т.к. использование $_SESSION - избыточно. Если вам нужно передавать некие значения между обработкой разных запросов (при переходе посетителя со страницы на страницу), то конечно использовать $_SESSION - это самый приемлемый вариант.

    Про «доступные ключи», да, конечно же в контексте вашей задачи более уместно использовать слово «занятые ключи».

  7. Илья, спасибо за ответ!

    Общение - необходимая вещь - постепенно все разъясняется!

    Да, мне нужно при переходах по страницам.

    А вот это: "сохранять и передавать некие значения между ушками в рамках обработки одного запроса", если не трудно, пожалуйста разъясните немного подробнее: как это вообще возможно передать значения при обработке одного запроса? Как-то вообще себе этого не представляю.

  8. А вот это: "сохранять и передавать некие значения между ушками в рамках обработки одного запроса", если не трудно, пожалуйста разъясните немного подробнее: как это вообще возможно передать значения при обработке одного запроса? Как-то вообще себе этого не представляю.

    «Один запрос» - это обращение посетителя к сайту открыть определённую страницу. Запрос поступает веб-серверу, а он для обработки запускает движок сайта. Движок, в свою очередь, подгружает разные php-файлы со своими процедурами и функциями - в результате получается, что выполняется как бы одна большая программа. Теперь нужно вспомнить понятие «область видимости переменной». Каждый раз, когда выполняется ваша ушка, по сути происходит вызов функции, у которой своя область видимости. Чтобы сохранить или передать какое-то значение из этой функции «наружу» нужно обратиться к глобальной переменной. Надеюсь, что смог ответить на ваш вопрос, Владимир.

  9. Да, смогли!

    Большое спасибо!

    Я понял это так: если я использую на странице больше чем одну ушку, то данные, которые нужны в разных фрагментах кода, можно легко передать от кода (ушка), запускаемого ранее, в последующий код - именно посредством $MSO.