CAPTCHA. Как ее использовать в cotonti. CAPTCHA. Как ее использовать в cotonti.

Что такое captcha я не думаю, что надо рассказывать.
В cotonti появился целый набор плагинов с различными CAPTCHA, а так же плагины позволяющие управлять настройками, выводить ту или иную CAPTCHA в зависимости от предпочтений. Появился единый механизм подключения.

Разберем каждый из плагинов по отдельности:
Captcha – это самая обычная картинка-подтверждение. Используется класс: SecurImage (Drew Phillips). Она обладает большим количеством недокументированных настроек, которые можно настроить по своему желанию в файле …\plugins\captcha\inc\securimages.php.
Mcaptcha. В данной Captcha для подтверждения нужно решить простой пример подтверждение. Используется как альтернативный вариант для captcha. Автор Trustmaster.
Qaptcha. Предварительно вы создаете большую базу вопросов с ответами на них, А пользователю остается правильно ответить на ваш вопрос. Автор Trustmaster
reCAPTCHA — проект, использующий в роли рабочего элемента для ответов пользователей на CAPTCHA-запрос неразборчивое для OCR слово, являющееся одним из множества искажённых фрагментов сканированных книг в дополнение к слову, сгенерированному компьютером. Этот сервис учитывает приёмы использования и возможности программ оцифровки текста книг. Для надёжности одно и то же слово предлагается нескольким пользователям различных сайтов. Когда разные пользователи одинаково ответили на CAPTCHA-запрос, предполагается, что они ввели правильное слово. Более подробную информацию можно найти на http://recaptcha.ru/

Приведенные выше плагины устанавливают защиту при регистрации. Но не всегда этого достаточно.
Com4guests. Включает установленную ранее CAPTCHA для комментариев. Теперь гости также смогут оставлять комментарии у вас на сайте, если, конечно, правильно решат CAPTCHA

Captchamanager. У вас на сайте установлено две и более CAPTCHA. Этот плагин поможет вам, выбрать ту, которая будет использоваться в данный момент, или же назначить случайный выбор.

Бывает, возникают ситуации, когда нам надо подключить CAPTCHA в другой модуль или плагин, что для этого надо? На самом деле все очень просто.
1. Устанавливаем любую CAPTCHA.
2. В той части плагина где происходит заполнение формы (в модулях за это чаще всего отвечает тег xxx.tags)
Вставляем:

$verifyinput = "<input name=\"rverify\" type=\"text\" id=\"rverify\" size=\"10\">";
if (!function_exists (sed_captcha_generate))
{
    function sed_captcha_generate($func_index = 0)
    {
        global $sed_captcha;
        if(!empty($sed_captcha[$func_index]))
        {
            $captcha=$sed_captcha[$func_index]."_generate";
            return $captcha();
        }
        return false;
    }
}
$t->assign(array(
    " VERIFYIMG" => sed_captcha_generate(),
    "VERIFYINPUT" => $verifyinput,
    ));

Поясняю, функция sed_captcha_generate – нужна только в том случае, если не установлен менеджер, поэтому и выполняется данная проверка.
А в той части, где идет проверка правильности заполнения формы – вставьте следующий код:

$rverify  = sed_import('rverify','P','TXT');
if(!function_exists(sed_captcha_validate))
{
    function sed_captcha_validate($verify = 0 ,$func_index = 0)
    {
        global $sed_captcha;
        if(!empty($sed_captcha[$func_index]))
        {
            $captcha=$sed_captcha[$func_index]."_validate";
            return $captcha($verify);
        }
        return false;
    }
}

$error_string .= sed_captcha_validate($rverify) ? '' : 'ВАШ ТЕКСТ ОШИБКИ<br />';

Опять же выполняется подобная проверка.

Создать свою CAPTCHA довольно просто. Для начала возьмите любую из представленных выше и начните изучать ее код. Наиболее простые и понятные: Captcha и Qaptcha
Да будут защищены ваши сайты от РОБОТОВ!
 

#1. Часть 2. Рабочий пример

Устанавливаем одну из выше предложенных CAPTCHA
Для демонстрации подключения CAPTCHA взят один из самых простых плагинов: contactus
Пересохраните русский языковой файл в UTF.
Скачиваем и устанавливаем его на сайт.
Открываем файл contactus.php
Находим строку 39
Туда вставляем следующее

$rverify  = sed_import('rverify','P','TXT');

Данная строчка отвечает за получение кода, который ввел пользователь
А после этого еще вставим следующий код (Примечание: данный код можно не вставлять, если у вас установлен Captchamanager):

if(!function_exists(sed_captcha_validate))
{
    function sed_captcha_validate($verify = 0 ,$func_index = 0)
    {
        global $sed_captcha;
        if(!empty($sed_captcha[$func_index]))
        {
            $captcha=$sed_captcha[$func_index]."_validate";
            return $captcha($verify);
        }
        return false;
    }
}
if (!function_exists (sed_captcha_generate))
{
    function sed_captcha_generate($func_index = 0)
    {
        global $sed_captcha;
        if(!empty($sed_captcha[$func_index]))
        {
            $captcha=$sed_captcha[$func_index]."_generate";
            return $captcha();
        }
        return false;
    }
}

Мы добавили функции генерации и проверки CAPTCHA. Теперь добавим им жизни:
Строка 157: сейчас она такая:

$plugin_body .= "</td></tr>\n";

И после нее добавляем:

$plugin_body .= "<tr><td>".sed_captcha_generate().": </td><td>\n";
$plugin_body .= "<input name=\"rverify\" type=\"text\" id=\"rverify\" size=\"10\" >\n";
$plugin_body .= "</td></tr>\n";

Этим мы добавим Captcha, а также поле для ввода кода.
Возвращаемся к строке 69. Сейчас она такая:

if ($a=="send") {

и после нее добавляем

$error .= sed_captcha_validate($rverify) ? '' : $L['verif_failed'].'<br />';

А это отвечает за проверку кода введенного пользователем, и в случае несоответствия выдает ошибку.
Сохраняем.
Работает? (если не получилось, скачайте рабочий пример)
Добро пожаловать в мир программирования!



1. Oughtem  06.08.2009 13:56
Вах! Супер! Автору уважуха.
2. Oughtem  06.08.2009 23:52
Только вопрос [quote=]А в той части, где идет проверка правильности заполнения формы – вставьте следующий код:[/quote]
где эта часть то, хотя бы в данном примере
3. esclkm  07.08.2009 16:56
обычно это там где есть идет формирование $error_string.
Правда в примере получилось что формировался $error.
Просто обычно после этого выполняется след. действие : система проверяет - пустая ли строка error_string - если пустая - то выполняет нужные действия , а если нет - выдает ошибку.
4. Sergeich  06.12.2010 16:43
А как эту чудокапчу подключить к форме логина, форме добавления сообщения и т.п.? Не совсем понятно, не лезть же в файлы ядра.
Добавление комментариев доступно только зарегистрированным пользователям