CAPTCHA в стандартную форму обратной связи для Joomla 1.0.15

Среда, 10 Мар 2010 19:01

Форма обратной связи в Joomla может легко использоваться для рассылки спама (вместо базы данных электронных адресов спамеру достаточно иметь список сайтов на Joomla).
Чтобы избавиться от этого недуга — внедрим CAPTCHA собственными силами в стандартный компонент контактов.
Для этого будет использоваться скрипт kcaptcha (хотя возможно использовать и аналоги)

1. В файле /components/com_contact/contact.html.php в функцию _writeEmailForm мы добавим показ защитного изображения и поле для ввода (после строки 694):
Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php echo(_EMAIL_A_COPY); ?>
</label>
<?php
}
?>
<!-- НАЧАЛО КОДА -->
<?php session_start(); ?><br />
<img src="/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"
alt="Включите показ картинок в браузере" />
<br />
<label for="contact_captcha">
Введите код с картинки:
</label>
<br />
<input type="text" name="captcha" id="contact_captcha" value="" size="30" maxlength="10" />
<!--КОНЕЦ ДОБАВЛЯЕМОГО КОДА -->
<br />
<br />

2. Добавим в /components/com_contact/contact.php в функцию sendmail проверку корректности введенного кода (строка382):

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$bannedText     = $mparams->get( 'bannedText',     '' );
$sessionCheck     = $mparams->get( 'sessionCheck', 1 );

// НАЧАЛО НАШЕГО КОДА
session_start();
if(!isset($_SESSION['captcha_keystring']) ||
$_SESSION['captcha_keystring']!==$_POST['captcha']){
unset($_SESSION['captcha_keystring']);
mosErrorAlert('Вы должны корректно ввести код с картинки.');
}
unset($_SESSION['captcha_keystring']);
// КОНЕЦ НАШЕГО КОДА

// check for session cookie
if  ( $sessionCheck ) {

3. Скачанный архив kcaptcha загрузим в корень сайта в папку kcaptcha (либо в другой каталог, но тогда придется поправить строку
Код:

1
<img src="/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"

Оригинал статьи — http://joomup.com/blog/2007/07/06/captcha-contact-form/

Если мы хотим что то подправить в отображении картинки, нам будет необходимо отредактировать файл kcaptcha\kcaptcha_config.php
Файл достаточно подробно прокомментирован, но на всякий случай повторюсь (переменные, не рекомендуемые для изменения не рассматриваю):
$allowed_symbols — доступные символы для картинок, я оставил только $allowed_symbols = «23456789»;
$length — кол-во символов для проверки
$width $height — ширина и высота картинки
$show_credits — показ ссылки на авторов, чтобы убрать — поставить false
$foreground_color и  $background_color — массивы цветов для фона и символов. Можно из закомментировать и расскомментировать две предыдущие строки и посмотреть на результат.
$jpeg_quality — качество генерируемого изображения, чем больше — тем больше вес картинки (не сильно принципиально).

Вот в принципе и все, спасибо авторам за подробные комментарии по данному хаку.?



Вы можете оставить отзыв или трекбек со своего сайта.

Один комментарий на «CAPTCHA в стандартную форму обратной связи для Joomla 1.0.15»

  1. ilma55 пишет:

    11 Янв 2012 в 14:41

    прикольно. спасибо.
    а я еще и кнопку reload добавил =)

Ваш отзыв