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

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

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

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

<?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):

Код:

$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 (либо в другой каталог, но тогда придется поправить строку
Код:

<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 добавил =)

Ваш отзыв