Скачал плагин JCaptcha отсюда
http://code.google.com/p/joomla15captcha/Поставил патчи. Настроил. Всё отлично заработало.
Но у меня на сайте есть страницы с самописными формами.
Прикрутил вывод CAPTCHA в форму на странице с помошью RD Add PHP (run-digital.com)
файл owncaptcha.php
<?php
$dispatcher = &JDispatcher::getInstance();
$results = $dispatcher->trigger( 'onCaptchaRequired', array( 'user.contact' ) );
if ($results[0])
$dispatcher->trigger( 'onCaptchaView', array( 'user.contact', 0, '', '<br />' ) );
?>
Капча вывелась в форму без проблем.
Далее возник вопрос - как проверить капчу?
Форма передаёт данные постом ($POST) в mysendmail.php (там я выполняю свои действия по отправке заказа на почту нужным адресам)
<?
jimport( 'joomla.event.dispatcher' );
jimport( 'joomla.user.user' );
$dispatcher = &JDispatcher::getInstance();
$results = $dispatcher->trigger( 'onCaptchaRequired', array( 'user.contact' ) );
if ( $results[0] ) {
$captchaparams = array( JRequest::getVar( 'captchacode', '', 'post' )
, JRequest::getVar( 'captchasuffix', '', 'post' )
, JRequest::getVar( 'captchasessionid', '', 'post' ));
$results = $dispatcher->trigger( 'onCaptchaVerify', $captchaparams );
if ( ! $results[0] ) {
// *** start your code ***
JError::raiseWarning( 'CAPTHCA', JText::_( 'CAPTCHACODE_DO_NOT_MATCH' ) );
// *** end your code ***
echo '<br /><a href="#" onclick="history.back();">Вернуться назад к заполненной форме</a>';
}
else { // Captcha is Valid!
}
}
Получаю Fatal error: Call to undefined function jimport()
Но если формой передать инфу какойто странице Joomla, например на /index.php?option=com_content&Itemid=64&id=132&lang=ru&view=article
и уже в нём вызвать mysendmail.php при помощи плагине RD Add PHP, то всё срабатывает, но тогда JRequest::getVar( 'captchacode', '', 'post' ) не получает параметров, т.к. RD Add PHP не передаёт в вызываемый файл параметры. А следовательно проверка CAPTCHA не проходит.
Вобщем руками никак JCaptcha к своей форме прикрутить что-то не получилось.
Если ктото сталкивался - подскажите.
P.S. Компоненты форм не могу использовать (слишком много форм придётся переписывать).