Joomla 3.4.4 Session Handler

Тема в разделе "Создание расширений для Joomla", создана пользователем cryptoprof, 05.10.2015.

  1. Offline

    cryptoprof Недавно здесь

    Регистрация:
    05.10.2015
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, уважаемые форумчане!
    Может быть и не по адресу обращаюсь, но прошу помочь разобраться мне с работой сессий в CMS Joomla 3.4.4, возможно у кого-то есть какой-то опыт. Вопрос состоит в следующем:
    Пишу небольшой модуль, который реализует форму обратной связи, у этой формы есть капча.
    Соответственно в капче я прописываю:
    Код (CODE):
    1. define( '_JEXEC', 1 );
    2. define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../../..' ));
    3. require_once ( JPATH_BASE.'/includes/defines.php' );
    4. require_once ( JPATH_BASE.'/includes/framework.php' );
    5. $mainframe = JFactory::getApplication('site');
    6. $mainframe->initialise();
    7. $session    = $mainframe->getSession();
    8. //Тут код генерации капчи, дальше пишется значение в сессию
    9. $session->set('qcapcha', $captcha);

    В основном файле модуля написан небольшой код, проверяющий значение капчи, полученный через сессию:
    Код (CODE):
    1. $session = JFactory::getSession();
    2. $capcha=$session->get('qcapcha',null);

    А теперь сама суть вопроса:
    Почему при обработчике сессий database - иногда попадаются старые значения капчи( или вообще возвращаются пустые значения), а при обработчике none, т.е. стандартном таких проблем нет? Куда копать даже не знаю. Доки смотрю с https://docs.joomla.org но не нахожу что в случае с обработчиком сессий database нужно работать как-то по-другому. И заметил еще одну особенность-если я включаю тот же код, что находится в модуле, в какой-либо другой файл(чистый php), то сессия работает на нем стабильно в режиме database.

     
  2.  
  3. Лучший ответ:
    Сообщение #4 от 05.10.2015, автор woojin
  4. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    не понятно на фига ты нагородил такой ерунды в генераторе капчи?
    не проще ли отправлять запрос через index.php!
    т.е. что бы файл генерации запускался через запрос типа /index.php?option=com_swj&view=schedule&id=7&Itemid=276 к примеру!
    тогда у тебя всё будет в одной и той же сессии

    P.S. и вообще для таких игр с капчей должно быть отключено (принудительно) кэширование, что бц или весь модуль или какая то его часть вообще ни каким макаром в кэш не попадала, надеюсь в доках найдёшь как работать с кэшем ;)
     
  5. Offline

    cryptoprof Недавно здесь

    Регистрация:
    05.10.2015
    Сообщения:
    2
    Симпатии:
    0
    Спасибо за быстрый отклик!Я не большой спец по веб-программированию и не знаю "хороших" практик, не совсем понял вашей мысли. Т.е. через url мы можем каким-то образом обратиться к php-скрипту с капчей(а в скрипте с капчей нужно как-то обрабатывать этот вызов)? Про кеширование спасибо-буду разбираться!
    P.S. Форма обратной связи написана была сначала на чистом PHP и работала на сессиях без особых проблем, теперь появилась необходимость сделать такой же модуль для Joomla(а с ней я не сильно знаком). Еще раз спасибо
     
  6. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    Лучший ответ
    самый простой способ отправить генератор капчи в плагин
    а вот список событий на которые можно зацепить сначала генератор, а потом уже обработчик
    https://docs.joomla.org/Plugin/Events
    а тут (это уже в каталоге самой CMS) \plugins\captcha\recaptcha\ можно посмотреть как сделана обработка reCaptcha и на основе данного плагина написать свой)))
     
    cryptoprof нравится это.

Поделиться этой страницей

Загрузка...