Что такое 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
Да будут защищены ваши сайты от РОБОТОВ!
Устанавливаем одну из выше предложенных 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 />';
А это отвечает за проверку кода введенного пользователем, и в случае несоответствия выдает ошибку.
Сохраняем.
Работает? (если не получилось, скачайте рабочий пример)
Добро пожаловать в мир программирования!
Thanked: 6 kez
Thanked: 6 kez
где эта часть то, хотя бы в данном примере
Thanked: 76 kez
Правда в примере получилось что формировался $error.
Просто обычно после этого выполняется след. действие : система проверяет - пустая ли строка error_string - если пустая - то выполняет нужные действия , а если нет - выдает ошибку.
Thanked: 16 kez