Обычная капча formIt

Сниппет formit по умолчанию включает в себя функции для работы с reCaptcha, которая зачастую неустраивает ни разработчиков, ни заказчиков, поскольку вызывает затруднения у начинающих разработчиков, да и посетителям довольно сложно распознать два трудночитаемых слова. Поэтому возникает желание заменить ее на что-то более простое и легко настраиваемое.
Для вывода картинки создал сниппет «rnd» со следующим содержанием:
создадим tv capimg



session_start();
//Создаем строку из 8 случайных цифр. 
for($i=1; $i<=8; $i++)
{$r=rand(0, 9);
$rnd.=$r; $rndn.=$r;
if ($i==4){$rndn.=' ';}}
// Записываем их в сессию
$_SESSION['captcha']=$rnd;
// Переменную с пробелом выводим на картинку с помощью phpthumbof
return 'Каптча';

При вызове будит типа строки 8555 5558
Для проверки создаем сниппет «checkCaptcha»


//Создаем строку из 8 случайных цифр. 
$success = $value == $_SESSION['captcha']; 
if (!$success) { 
// Сообщение об ошибке при неправильном вводе. 
$validator->addError($key,'Введен неправильный номер, попробуйте еще раз.'); 
} 
return $success; 

Далее вывод в FormIt
[[
!FormIt
&hooks=`spam,email,redirect`
&emailTpl=`EmailChunk`
&emailSubject=`Сообщение с сайта Web-мастер Danwez`
&emailTo=`admin@site.ru` &redirectTo=`2`
&validate=`captcha:checkCaptcha`
&customValidators=`checkCaptcha`
]]

А в форму добавляем вызов каптчи


[[!rnd]] [[!+fi.error.captcha]]

Комментарии (2 комментария) на "Обычная капча formIt"

  1. Любовь:

    Добрый день. Хочу воспользоваться вашим сниппетом CheckCaptcha, но почему-то не получается. captcha:checkCaptcha — это должно проверяться также на пустое поле или надо что-то дописать?
    У меня при отправке не пишет что поле пустое или неправильные цифры. Но если цифры ввести правильно, то письмо отправляется.

  2. admin:

    Вы вставил это в код вызова формы [[!+fi.error.captcha]], а это в вызов сниппита &validate=`captcha:checkCaptcha`
    &customValidators=`checkCaptcha` если не получится можете попробовать капчу от гугл, удобно.

Отправить комментарий