title
ДомойСтатьиПравка кода → Captcha в Joomla 1.5 (Контакты)

Captcha в Joomla 1.5 (Контакты)

Что такое Capthca знают почти все. Это набор символов из букв и/или цифр, которые нужно вести, чтобы доказать, что вы не "жираф", а вполне вменяемый человек.

По-умолчанию в Joomla 1.5 такой защиты не предусмотрено, и через некоторое время, как вы запустили свой сайт, к вам на почту начинают сыпаться письма со всякими разными предложениями, или проще говоря - спам.

Будем бороться с этим. Поставим на страницу с контактами защиту. Принцип работы весьма прост: ввели картинку верно - письмо отправляется, ошиблись - попробуйте еще раз.

Итак, нам понадобятся три файла для правки кода:

  • index.php (лежит в корне сайта)
  • controller.php (лежит здесь components/com_contact/)
  • default.php (лежит здесь components/com_contact/views/contact/tmpl)

1) Открываем index.php и находим в нем следующий фрагмент кода (~17 строка)

define('JPATH_BASE', dirname(__FILE__) );

define( 'DS', DIRECTORY_SEPARATOR );

Вставляем между ними код:

session_start();
if(isset($_SESSION['captcha_keystring'])&&($_SESSION['captcha_keystring']==$_POST['captcha']))
   $_POST['captcha']=1;
else
   $_POST['captcha']=0;
session_destroy();

Спускаемся в самый низ (~86-90 строки) и находим там:

JDEBUG ? $_PROFILER->mark('afterRender') : null;
$mainframe->triggerEvent('onAfterRender');

Сразу после этих строк вставляем:

JSession::close();

Сохраняем файл. Проверьте, что сохранили в кодировке UTF-8 (without BOM).

2) components/com_contact/controller.php ~176 строка. Находим там:

$mail->addRecipient( $contact->email_to );
$mail->setSender( array( $email, $name ) );
$mail->setSubject( $FromName.': '.$subject );
$mail->setBody( $body );

И после этих строк вставляем:

if(1!==$_POST['captcha']) {
JError::raiseWarning( 403, JText::_( 'Enter captcha code' ));
$this->setRedirect(JRoute::_('index.php?option=com_contact&view=contact&id='.$contactId, false));
return false;
}

3. /components/com_contact/views/contact/tmpl/default_form.php ~63 строка. Фрагмент кода такой:

<br />
<br />
<button class="button validate" type="submit"><?php echo JText::_('Send'); ?></button>

Сразу после этого вставляем наш код:

<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;" />

Скачиваем  капчу здесь

Распаковываем архив и папку kcaptcha аккуратно (т.е., чтоб все файлы записались) кладем в папку libraries.

Теперь добавляем новые пункты в языковой файл /language/ru-RU/ru-RU.ini следующие строчки:

Enter captcha code=Введите правильный код с картинки
Enter captcha text=Введите символы с картинки

Все готово. Проверяем.

Теперь давайте рассмотрим такую ситуацию, когда пользователь не может разобрать символы, и по щелчку по изображению, мы покажем ему другую картинку.

Открываем файл /components/com_contact/views/contact/tmpl/default_form.php

Для картинки назначаем id, например cimg. И добавляем событие onclick, то есть в результате будет:

<img id="cimg" title="Не видите символы, щелкните по картинке - предложим другую" src="<?php JURI::base() ?>libraries/kcaptcha/index.php?<?php echo session_name(); ?>=<?php echo session_id(); ?>" alt="Captcha" style="vertical-align:-25px;" onclick="document.emailForm.cimg.src='<?php JURI::base(); ?>/libraries/kcaptcha/index.php?' + new String(Math.random())"/>

Обратите на фрагмент document.emailForm.cimg.

emailForm - имя формы;

cimg - id картинки.

Теперь картинка будет обновляться по шелчку.

Добавить комментарий


Защитный код
Обновить

Резина cordiant на ваз 2106

Комментарии

  • Огромное спасибо. Все просто супер. Сделал по ману... Читать
    31.07.11 16:08
  • Эээ, проверил работу капчи на вашем сайте. Вбиваю ... Читать
    05.05.11 19:31
  • нужно написать заглавными: ENTER CAPTCHA CODE=Введ... Читать
    26.04.11 20:32
  • не срабатывает регистрация пользователей (сбрасыва... Читать
    08.04.11 05:16
  • А пиариться не надоело!? Единственные и неповторим... Читать
    04.04.11 20:50
  • Что-то тут обрезалось в редакторе. Долго искать, а... Читать
    03.04.11 17:49
    admin

Пользователям