LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
19.05.2013, 04:16:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 2.5 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Добавляем CAPTCHA в стандартную форму обратной связи  (Прочитано 25782 раз)
0 Пользователей и 1 Гость смотрят эту тему.
beliyadm
Профи
********

Репутация: +1479/-61
Offline Offline

Пол: Мужской
Сообщений: 7867


Севастополь==Россия


« : 18.02.2008, 02:33:45 »

Как известно, форма обратной связи в 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 » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.18 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet