Форум русской поддержки Joomla!® CMS
09.12.2016, 23:20:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

PWeb AJAX Popup Contact Form - ошибка при включении плагина "система - кеш"

 (Прочитано 395 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vitamax
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 44


« : 21.06.2016, 11:29:11 »

Привет, формумчане.

На одном сайте (joomla  3.0.3) установлен PWeb AJAX Popup Contact Form 3.2.22
Работает замечательно. Но я решил поработать над скокостью загрузки страниц. Включил плагин "Система-кеш" и форма перестает отправлять сообщения. Причем не сразу, а через минут 15, т.е. видимо после создания файлов кеша.
Вылетают ошибки: "Недопустимый маркер. Обновите страницу и попробуйте еще раз" и еще какая-то, уже не могу отловить.

Начал копать. Хотел сначала обновиться. Joomla  корректно не обновляется - сайт падает. Пробовал как через панель, так и накатыванием файлов сверху.
Пробовал обновить модуль - оказывается для Joomla  3.0.3 выше PWeb 3.2.22 ставить тоже нельзя - падает (на оф. сайте модуля написано)

Копаю дальше. Нашел код, где вылетает эта ошибка: /modules/mod_pwebcontact/helper.php строка 1270 (примерно)
(MOD_PWEBCONTACT_TOKEN_ERR="Недопустимый маркер. Обновите страницу и попробуйте еще раз")
код:
Код:
public static function checkToken()
{
$response = true;

try {
$app = JFactory::getApplication();
$token = JSession::getFormToken();

if (!($app->input->post->get($token, '', 'alnum') || $app->input->get->get($token, '', 'alnum')))
{
$session = JFactory::getSession();
if ($session->isNew())
{
// session has expired or cookies are blocked
$response = array('status' => 308, 'msg' => JText::_('MOD_PWEBCONTACT_COOKIES_ERR'));
}
else
{
$response = array('status' => 302, 'msg' => JText::_('MOD_PWEBCONTACT_TOKEN_ERR')); // на этой ветке вылетает
}
}
} catch (Exception $e) {
$response = array('status' => 302, 'msg' => JText::_('MOD_PWEBCONTACT_JOOMLA_ERR'), 'debug' => array($e->getMessage().' in '.$e->getFile().' on line '.$e->getLine()));
}

return $response;
}

Пробовал разные варианты настроки модуля (включал/отключал подключение бутстрап скриптов и стилей, тестил в режиме debug).
И что самое  неудобное - после очистки кеша форма работает минут 20, что меня несколько раз вводило в заблуждение.

В итоге я нашел два решения, оба меня не устраивают:
1. Не включать плагин "система-кеш"
2. закоментить тело функции и возвращать просто "true"

Остановился пока что на втором варианте. Но неизвестно к чему это приведет.

Кто силен в этом модуле подскажите почему он нестабильно работает при включенном плагине "система-кеш"?

п.с. обновить ни Joomla, ни модуль я не могу - сайт падает.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3593


« Ответ #1 : 21.06.2016, 12:11:53 »

Потому что token не обновляется. Если убрать token, то рискуете утонуть в спаме. Можно попробовать снять в админке модуля галочку "Использовать кэширование", если не поможет, то остается только принудительно очищать кэш в коде модуля.
Записан
vitamax
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 44


« Ответ #2 : 21.06.2016, 23:25:04 »

Потому что token не обновляется. Если убрать token, то рискуете утонуть в спаме. Можно попробовать снять в админке модуля галочку "Использовать кэширование", если не поможет, то остается только принудительно очищать кэш в коде модуля.
почему получается так что токен не обновляется?
чистить весь кеш перед отправкой формы?  это приведет к увеличению времени загрузки сайта, а это то, с чем я борюсь.
как можно программно почистить кеш?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3593


« Ответ #3 : 22.06.2016, 00:00:19 »

почему получается так что токен не обновляется?
Потому что кэш.
чистить весь кеш перед отправкой формы?  это приведет к увеличению времени загрузки сайта, а это то, с чем я борюсь.
как можно программно почистить кеш?
Чистить только кэш модуля. Как - я вам дал 2 варианта, вы хоть один пробовали? И готовый код я вам не дам, смотрите мою подпись.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet