- Веб-Шаблоны
- Шаблон интернет-магазина
- Шаблоны для CMS
- Facebook шаблоны
- Конструктор сайтов
Joomla. Решение проблем. Ошибка Invalid Token
Март 14, 2012
Работая с сайтом на Joomla вы можете увидеть сообщение об ошибке: Invalid Token. В этом посте мы опишем причину ее возникновения и пути кстранения.
Что такое Token?
Token впервые появились в версии Joomla 1.5.3. Они были задуманы как средство безопастности для форм. Для любой формы отправляемой с сайта на основе Joomla токен должен быть пройден. Если этого не происходило, или же происходила ошибка, то создавалось сообщение об ошибке Invalid Token. Это очень эффективный способ борьбы со спамом и хакерскими атаками.
Сфера влияния
Все формы на сайтах под управлением Joomla затронуты этим механизмом. Эта ошибка гораздо чаще проявляется в форме входа и регистрации, так как ими пользуются значительно регулярнее.
Почему возникают ошибки Invalid Token?
Существует множество причин для появления такой ошибки. Наиболее типичные из них:
Просроченные cookie: Срок действия ожидаемыех Joomla cookie истек. Для устранения проблемы очистите cookies и попробуйте авторизоваться опять.
Кеширование:
- Полностью отключите кеширование. Для этого потребуется два действия:
- Войдите в административную панель Joomla и прейдите в раздел Site, Global Configuration, System. В разделе Нажмите там and click on “No” next to Cache under Cache Settings and
- Перейдите в раздел Extensions,Plugins и отключите плагин System cache. Вы можете найти его с помощью строки поиска. Напишите в ней System – Cache, в результатах поиска поставьте галочку возле плагина и нажмите Disable в правом верхнем углу.
- Исправьте код в форме входа (или любой другой, в которой возникает ошибка) самостоятельно. Для этого закоментируйте проверку token в коде.
В файле с формами найдите следующий код:
<input type="hidden" name="<?php echo JUtility::getToken(); ?>" value="1" />
и замените его на
<?php echo JHTML::_( 'form.token' ); ?>
В режиме совместимости (legacy mode или Joomla 1.0 mode): Использование Joomla в режиме Legacy mode может вызывать эту проблему. Просто отключите соответствующий плагин.
Использование стандартного кода для проверки token: некоторые версии Joomla/шаблонов Joomla используют специальный код для проверки token. Этот код требует изменений. Внесите следующие изменения:
- Откройте файл /modules/mod_login/tmpl/default.php и измените строку <?php JUtility::getToken(); ?> на <?php echo JHTML::_( ‘form.token’ ); ?>
- Во многих случаях форма входа перезаписывается шаблоном, так что вам потребуется проверить код в шаблоне для того, что бы убедиться, что он использует JUtility::getToken(); и заменить его на JHTML::_( ‘form.token’ );.
Отключенные cookie в браузере: Если cookie отключены в вашем браузере, то вы без сомнения увидите эту ошибку. Включите cookie для ее устранения.