[YaCaptcha] - яндекс каптча.
Сервис Яндекс.Чистый веб предназначен для борьбы со спамом в текстовых сообщениях, размещаемых пользователями и автоматическими роботами на страницах сайтов, форумов и пр.
Сервис позволяет обнаруживать спам-сообщения и формировать графическую CAPTCHA для отклонения запросов от роботов.
Реализовано три метода — обнаружение спама, получение CAPTCHA, проверка введённой CAPTCHA.
Для удобства все оформлено в пакет [YaCaptcha].
Простейший пример работы с [ajaxForm] тут demo.vgrish.ru/yacaptcha.html
настройки пакета
— Идентификатор id каптчи
— Ключ API «Чистый Веб»
— Идентификатор id сообщения если проводилась его проверка на спам
— Тип каптчи
— Адрес сервиса
чанк tpl.YaCaptcha.block
Доступны параметры:
— captchaType — тип каптчи
— link — адрес запроса на каптчу
— onlyCaptcha — показывать сразу каптчу (да)
пример сниппета
Спасибо за внимание.
Пакет доступен в репо Simple Dream на бесплатной основе.
Сервис позволяет обнаруживать спам-сообщения и формировать графическую CAPTCHA для отклонения запросов от роботов.
Реализовано три метода — обнаружение спама, получение CAPTCHA, проверка введённой CAPTCHA.
Для удобства все оформлено в пакет [YaCaptcha].
Простейший пример работы с [ajaxForm] тут demo.vgrish.ru/yacaptcha.html
настройки пакета
— Идентификатор id каптчи
— Ключ API «Чистый Веб»
— Идентификатор id сообщения если проводилась его проверка на спам
— Тип каптчи
— Адрес сервиса
чанк tpl.YaCaptcha.block
Доступны параметры:
— captchaType — тип каптчи
— link — адрес запроса на каптчу
— onlyCaptcha — показывать сразу каптчу (да)
пример сниппета
// подключаем 'yacaptcha'
$yacaptcha = $modx->getService('yacaptcha');
// значение каптчи с формы передаем в конфиг
$yacaptcha->config['captcha'] = $_POST['yacaptcha'];
// проверка
$yacaptcha->afterValidate();
// если каптча неверна то
if ($yacaptcha->getIsCaptchaRequired()) {
return $AjaxForm->error('Неправильная каптча', array('yacaptcha' => 'Неправильная каптча'));
}
Спасибо за внимание.
Пакет доступен в репо Simple Dream на бесплатной основе.
Поблагодарить автора
Отправить деньги
Комментарии: 38
Выложил в Магазин: store.simpledream.ru/packages/content/yacaptcha.html
Кстати, интересный аналог от Гугл недавно появился: www.google.com/recaptcha/intro/index.html
Кстати, интересный аналог от Гугл недавно появился: www.google.com/recaptcha/intro/index.html
Оу, Google на высоте, как всегда)
Не давно? Да он уже стар как мамонт по меркам современного веба так как появился еще в 2012.
Сама капча — да. Но сейчас там, вроде как, достаточно просто на галочку нажать..) Сильно не вникал, но данная версия действительно довольно молодая.
Recaptcha 2 — декабрь 2014
В чём преимущество перед Cool PHP captcha?
не пользовался этой каптчей, не могу знать о преимуществах. О яндекс каптче можно почитать по ссылке в начале поста.
Да вроде то же самое…
ну значит никаких )
Володя, ты чето обезумел в последнее время, один офигенный компанент за другим клепаешь ))))) Спасибо, уже пригодился ))
Спасибо большое!
пожалуйста...)
Здравствуйте!
Простите за невежество. Не совсем понял как подключить снипет. Чанк вывел всё отлично работает, но пока не проверяется. Используется форма под Formit
Простите за невежество. Не совсем понял как подключить снипет. Чанк вывел всё отлично работает, но пока не проверяется. Используется форма под Formit
можно вот так:
[[!AjaxForm?
&form=`tpl.AjaxForm.example.my`
&hooks=`yaCaptchaСheck,email,redirect`
&emailTpl=`sentEmailTpl`
&emailSubject=`сообщение`
&emailTo=`mail@mail.ru`
&redirectTo=`1`
]]
и в сниппете yaCaptchaСheck сделать проверку<?php
// подключаем 'yacaptcha'
$yacaptcha = $modx->getService('yacaptcha');
// значение каптчи с формы передаем в конфиг
$yacaptcha->config['captcha'] = $fields['yacaptcha'];
// проверка
$yacaptcha->afterValidate();
// если каптча неверна то
if ($yacaptcha->getIsCaptchaRequired()) {
$hook->addError('yacaptcha','Неправильная каптча');
return false;
}
Принцип понял, благодарю!
Теперь капча проверяется, но нет результатов — нет отправки и редиректа на избранную страницу, и нет ошибки о неправильной капче. Просто возврат на ту же страницу с формой. Капчу добавил в форму через чанк. Пробовал с работающей формой — тот же результат. Без проверки через указанный сниппет всё отлично отправляется. Настраивал капчу согласно вашей инструкции, получил валидный ключ с Яндекс-сервиса.
Теперь капча проверяется, но нет результатов — нет отправки и редиректа на избранную страницу, и нет ошибки о неправильной капче. Просто возврат на ту же страницу с формой. Капчу добавил в форму через чанк. Пробовал с работающей формой — тот же результат. Без проверки через указанный сниппет всё отлично отправляется. Настраивал капчу согласно вашей инструкции, получил валидный ключ с Яндекс-сервиса.
значит по порядку:
нет ошибки о неправильной капче
добавить в чанк tpl.YaCaptcha.block, я проглядел…
хук для формит должен возвращать либо false — ошибка, либо true — все хорошо и идет дальнейшая обработка.
поэтому добавь в пример, в самый конец
нет ошибки о неправильной капче
добавить в чанк tpl.YaCaptcha.block, я проглядел…
<span class="error_yacaptcha">[[+fi.error.yacaptcha]]</span>
нет отправки и редиректа на избранную страницухук для формит должен возвращать либо false — ошибка, либо true — все хорошо и идет дальнейшая обработка.
поэтому добавь в пример, в самый конец
return true;
будет вот так<?php
// подключаем 'yacaptcha'
$yacaptcha = $modx->getService('yacaptcha');
// значение каптчи с формы передаем в конфиг
$yacaptcha->config['captcha'] = $fields['yacaptcha'];
// проверка
$yacaptcha->afterValidate();
// если каптча неверна то
if ($yacaptcha->getIsCaptchaRequired()) {
$hook->addError('yacaptcha','Неправильная каптча');
return false;
}
return true;
и думаю будет работать…
Всё работает!
Благодарю :)
Благодарю :)
а вот у меня не работает… Хотя все точно так же делаю
добавить в чанк tpl.YaCaptcha.block, я проглядел…Если форм несколько, то сведения об ошибке выведутся только в форме с префиксом fi.
[[+fi.error.yacaptcha]]
Что же делать с остальными формами на странице?
Спасибо.
Привет!
Нашел баг.
Если Якапчу использовать с AjaxForm, как в примере, и выставить в вызове AjaxForm проверку полей &validate=`email:required,message:required`, то в случае не заполнения одного из полей, после попытки неудачной отправки формы, будет постоянно выдаваться ошибка "[FormIt] Произошла ошибка при попытке отправить почту. Could not instantiate mail function." То есть после первой неудачной попытки из-за незаполненного поля, форма больше не отправится до перезагрузки страницы.
Если из формы капчу убрать, то всё норм работает.
Нашел баг.
Если Якапчу использовать с AjaxForm, как в примере, и выставить в вызове AjaxForm проверку полей &validate=`email:required,message:required`, то в случае не заполнения одного из полей, после попытки неудачной отправки формы, будет постоянно выдаваться ошибка "[FormIt] Произошла ошибка при попытке отправить почту. Could not instantiate mail function." То есть после первой неудачной попытки из-за незаполненного поля, форма больше не отправится до перезагрузки страницы.
Если из формы капчу убрать, то всё норм работает.
срок жизни каптчи ровно одна проверка… это особенность якапчти
Код сбрасывается и новая картинка появляется, но если вводить новый код сообщение не отправляется и код снова обновляется и так до бесконечности :)
Повторю свой вопрос:
Что же делать с остальными формами на странице?
Спасибо.
добавить в чанк tpl.YaCaptcha.block, я проглядел…Если форм несколько, то сведения об ошибке выведутся только в форме с префиксом fi.
[[+fi.error.yacaptcha]]
Что же делать с остальными формами на странице?
Спасибо.
я не понимаю ваш вопрос… и в чем проблема тоже.
На странице несколько форм, все с разными плейсхолдерами.
К примеру, [[+fo.error.yacaptcha]] — ничего не покажет, а сообщение об ошибке сработает только в форме с плейсхолдером +fi.
К примеру, [[+fo.error.yacaptcha]] — ничего не покажет, а сообщение об ошибке сработает только в форме с плейсхолдером +fi.
незнаю. Формит вообще не пользуюсь, разбираться нет времени.
Прикольная штука, особенно если бы она работала, было бы вообще отлично!
при вызове чанка с капчей получаю 500 (Internal Server Error)… Ключ создан. В чем может быть ошибка, подскажите пожалуйста?
не знаю, если можешь кинь доступы на vgrish@gmail.com — посмотрю…
А yacaptcha_captcha_id можно оставлять стандартным или нужно менять, скажите пожалуйста?
Это идентификатор каптчи в сессии — можно не трогать, можно поменять…
при установке ругается кажется на то, что не может подтянуть pdoTools, хотя тот стоит
А где найти пакет? В магазине его почему-то нет…
Сервис Яндекс.Чистый веб был закрыт. Каптча соответсвенно не работает.
а какие сейчас альтернативы, не в курсе? чем можно заменить?
modx.com/extras/package/recaptchav2
Нормально работает с AjaxForm, кстати
Нормально работает с AjaxForm, кстати
я вот такой каптчей пользуюсь при необходимости keith-wood.name/realPerson.html
гуд, спасибо! на javascript + никаких изображений, псевдографика как будто из старых эхо-конференций фидо -))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.