0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 36462 Просмотров
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Как известно, форма обратной связи в 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 - качество генерируемого изображения, чем больше - тем больше вес картинки (не сильно принципиально).

Вот в принципе и все, спасибо авторам за подробные комментарии по данному хаку.
« Последнее редактирование: 04.06.2008, 00:13:52 от Physicist »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание формы обратной связи с помощью комопонета FacilieForms 1.4.7

Автор Fon

Ответов: 0
Просмотров: 25777
Последний ответ 17.03.2008, 08:50:57
от Fon