12 августа 2009

Интеграция KCAPTCHA с Joomla 1.5. Часть 2: Компонент com_contact

Итак, продолжаю первую статью об интеграции KCAPTCHA с Joomla 1.5. Сегодня опишу интеграцию KCAPTCHA с компонентом com_contact.

Приступим:
1) В файле /components/com_contact/controller.php после строки 164 добавим:
$mail->setSubject( $FromName.': '.$subject );
$mail->setBody( $body );

// BEGIN PATCH
if(1!==$_POST['captcha']) {
	JError::raiseWarning( 403, JText::_( 'You need to enter the code shown' ));
	$this->setRedirect(JRoute::_('index.php?option=com_contact&view=contact&id='.$contactId, false));
	return false;
}
// END PATCH

$sent = $mail->Send();


2) В файл /components/com_contact/views/contact/tmpl/default_form.php после строки добавим:
<?php endif; ?>
<!-- BEGIN PATCH -->
<br />
<br />
<label for="captcha"><?php echo JText::_( 'Enter text shown below' ); ?>:</label>
<br />
<input type="text" name="captcha" class="inputbox" size="20" id="captcha" />
<img src="<?php JURI::base() ?>libraries/kcaptcha/index.php?<?php echo session_name(); ?>=<?php echo session_id(); ?>" alt="Captcha" style="vertical-align:-25px;" />
<!-- END PATCH -->
<br />
<br />
<button class="button validate" type="submit"><?php echo JText::_('Send'); ?></button>


Готово! Если делаете интеграцию только для компонента com_contact, то не забудьте добавить нужный код в index.php Joomla, а также языковые константы в файл локализации, как это описано в первой части.

Продолжение: интеграция KCAPTCHA с модулем mod_login.
0

Комментарии:13

avatar
  • fred
  • 16 августа 2009, 16:37
  • 0
во первых код
<?php endif; ?>
в файле
/components/com_contact/views/contact/tmpl/default_form.php
есть аж два раза на строке 28 и на строке 63, вот код нужно вставить после 63 (это так чтоб другие не запутались и чтобы вы исправили;))
во вторых эта капча не совместима с модулем loginbox_1.0.1 (всплвающаю авторизация и регистрация)
как только поставил капчу так сразу накрылся модуль (вернул все обратно) но это ошибка вроде как первой части, удали код первой части все заработало)) хотя из-за чего это я не знаю )
а так все зачетно… давно искал капчу и наконец то нашел )) в обратной связи все таки поставил )
avatar
<?php endif; ?>
присутствует 2 раза, но ведь я в листинге написал и перед чем должен вставляться хак:
<br />
<br />
<button class="button validate" type="submit"><?php echo JText::_('Send'); ?></button>

и это место в коде как раз присутствует 1 раз :)

нельзя говорить что капча несовместима с модулем loginbox_1.0.1 т.к. он не является штатным модулем joomla. да видимо этот модуль для регистрации используется компонент com_user, который в котором вы прохакали и который ожидает ввода капча, а в loginbox_1.0.1 поля для ввода капчи естественно нет, вот и не работает. нужно просто добавить это поля и тогда всё встанет на круги своя.

кстати fred, письмо об активации всё таки пришло? было в спаме или нет?
avatar
  • Polosat
  • 04 сентября 2009, 23:56
  • 0
на заметку, буду хакать =), в последнее время спам письма всё чаще и чаще из контактов приходят
avatar
  • alex
  • 06 сентября 2009, 09:51
  • 0
от китайского бота это не спасёт
avatar
на шаблоне YOO_Flux не отображает kcaptcha, сделал всё как написано выше для com_contacts, но на многих шаблонах не отображает, что и где нужно добавить? подскажите!
avatar
нашел ответ — нужно зайти в папку с шаблоном (templates\yoo_flux\html — и удалить папку com_contact) — работает!!!
avatar
правильно но не правильно! нужно не удалить com_contact из templates\yoo_flux\html а внести изменения пункта 2 в нём
avatar
да, на самом деле удалять не желательно, а то не будет отображаться текст когда введешь например email адрес не по шаблону…
Тогда вопрос к тов.Pedrosoft — где внести изменения???

И ещё хотелось бы продолжения — Интеграции KCAPTCHA с VirtueMart 1.1.3. на странице «Задать вопрос по этому товару»
avatar
ну в пункте 2 как не изменения а добавления. Вот куда вам удобнее вставить изображение кода и форму для его ввода, туда и вставляйте, главное что б это было между открывающимся и закрывающимся тегом FORM
avatar
Люди, требуется помощь. Установил как описано kcaptcha для модуля контактов. Joomla 1.5.17 Картинку показывает. После заполнения формы и внесения кода выдает такое:
Fatal error: Unsupported operand types in /home2/webtest/homepage/includes/router.php on line 148

Что сие значит и как исправить?
avatar
Это возникает именно после подключения капчи?
avatar
Ты прав… нифига не из-за капчи. ТОгда прям не знаю что это. Ладно… полез разбираться. Спасибо
avatar
Тут много вариантов описано forum.joomla.org/viewtopic.php?p=1621486
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.