К содержанию

[YaCaptcha] - яндекс каптча.

Сервис Яндекс.Чистый веб предназначен для борьбы со спамом в текстовых сообщениях, размещаемых пользователями и автоматическими роботами на страницах сайтов, форумов и пр.
Сервис позволяет обнаруживать спам-сообщения и формировать графическую 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 на бесплатной основе.
Володя
Володя
26 декабря 2014, 06:17
modx.pro
16 627
Поблагодарить автора Отправить деньги
Реклама

Комментарии: 38

Виталий
Виталий Проверенный
26 декабря 2014, 10:57
Выложил в Магазин: store.simpledream.ru/packages/content/yacaptcha.html

Кстати, интересный аналог от Гугл недавно появился: www.google.com/recaptcha/intro/index.html
    Андрей
    Андрей Старожил
    27 декабря 2014, 00:59
    Оу, Google на высоте, как всегда)
      Aртур Чикин
      Aртур Чикин Старожил
      27 декабря 2014, 23:07
      Не давно? Да он уже стар как мамонт по меркам современного веба так как появился еще в 2012.
        Максим Кузнецов
        Максим Кузнецов Проверенный
        28 декабря 2014, 00:07
        Сама капча — да. Но сейчас там, вроде как, достаточно просто на галочку нажать..) Сильно не вникал, но данная версия действительно довольно молодая.
          Виталий
          Виталий Проверенный
          28 декабря 2014, 00:51
          Recaptcha 2 — декабрь 2014
        Alexander V
        Alexander V Проверенный
        26 декабря 2014, 12:21
        В чём преимущество перед Cool PHP captcha?
          Володя
          Володя Эксперт
          26 декабря 2014, 13:56
          не пользовался этой каптчей, не могу знать о преимуществах. О яндекс каптче можно почитать по ссылке в начале поста.
            Alexander V
            Alexander V Проверенный
            26 декабря 2014, 17:32
            Да вроде то же самое…
              Володя
              Володя Эксперт
              26 декабря 2014, 17:42
              ну значит никаких )
          Сергей Скат
          Сергей Скат Проверенный
          26 декабря 2014, 12:25
          Володя, ты чето обезумел в последнее время, один офигенный компанент за другим клепаешь ))))) Спасибо, уже пригодился ))
            Scorp Satex
            Scorp Satex Старожил
            26 декабря 2014, 15:32
            Спасибо большое!
              Володя
              Володя Эксперт
              26 декабря 2014, 17:42
              пожалуйста...)
              Александр
              Александр Старожил
              29 декабря 2014, 20:01
              Здравствуйте!

              Простите за невежество. Не совсем понял как подключить снипет. Чанк вывел всё отлично работает, но пока не проверяется. Используется форма под Formit
                Володя
                Володя Эксперт
                29 декабря 2014, 21:17
                можно вот так:
                [[!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;
                }
                  Александр
                  Александр Старожил
                  30 декабря 2014, 11:51
                  Принцип понял, благодарю!

                  Теперь капча проверяется, но нет результатов — нет отправки и редиректа на избранную страницу, и нет ошибки о неправильной капче. Просто возврат на ту же страницу с формой. Капчу добавил в форму через чанк. Пробовал с работающей формой — тот же результат. Без проверки через указанный сниппет всё отлично отправляется. Настраивал капчу согласно вашей инструкции, получил валидный ключ с Яндекс-сервиса.
                    Володя
                    Володя Эксперт
                    30 декабря 2014, 11:58
                    значит по порядку:
                    нет ошибки о неправильной капче
                    добавить в чанк 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;
                    и думаю будет работать…
                      Александр
                      Александр Старожил
                      30 декабря 2014, 12:54
                      Всё работает!
                      Благодарю :)
                        nekto
                        nekto Старожил
                        04 июля 2015, 00:19
                        а вот у меня не работает… Хотя все точно так же делаю
                        tius
                        tius Старожил
                        13 января 2015, 15:28
                        добавить в чанк tpl.YaCaptcha.block, я проглядел…
                        [[+fi.error.yacaptcha]]
                        Если форм несколько, то сведения об ошибке выведутся только в форме с префиксом fi.
                        Что же делать с остальными формами на странице?

                        Спасибо.
                  Boris Akimenko
                  Boris Akimenko Старожил
                  25 января 2015, 01:08
                  Привет!
                  Нашел баг.
                  Если Якапчу использовать с AjaxForm, как в примере, и выставить в вызове AjaxForm проверку полей &validate=`email:required,message:required`, то в случае не заполнения одного из полей, после попытки неудачной отправки формы, будет постоянно выдаваться ошибка "[FormIt] Произошла ошибка при попытке отправить почту. Could not instantiate mail function." То есть после первой неудачной попытки из-за незаполненного поля, форма больше не отправится до перезагрузки страницы.
                  Если из формы капчу убрать, то всё норм работает.
                    Володя
                    Володя Эксперт
                    25 января 2015, 01:11
                    срок жизни каптчи ровно одна проверка… это особенность якапчти
                      Boris Akimenko
                      Boris Akimenko Старожил
                      25 января 2015, 01:39
                      Код сбрасывается и новая картинка появляется, но если вводить новый код сообщение не отправляется и код снова обновляется и так до бесконечности :)
                    tius
                    tius Старожил
                    28 января 2015, 10:08
                    Повторю свой вопрос:

                    добавить в чанк tpl.YaCaptcha.block, я проглядел…
                    [[+fi.error.yacaptcha]]
                    Если форм несколько, то сведения об ошибке выведутся только в форме с префиксом fi.
                    Что же делать с остальными формами на странице?

                    Спасибо.
                      Володя
                      Володя Эксперт
                      28 января 2015, 10:27
                      я не понимаю ваш вопрос… и в чем проблема тоже.
                        tius
                        tius Старожил
                        28 января 2015, 10:30
                        На странице несколько форм, все с разными плейсхолдерами.
                        К примеру, [[+fo.error.yacaptcha]] — ничего не покажет, а сообщение об ошибке сработает только в форме с плейсхолдером +fi.
                          Володя
                          Володя Эксперт
                          28 января 2015, 10:39
                          незнаю. Формит вообще не пользуюсь, разбираться нет времени.
                      Константин
                      Константин Проверенный
                      11 марта 2015, 15:05
                      Прикольная штука, особенно если бы она работала, было бы вообще отлично!
                        nekto
                        nekto Старожил
                        08 мая 2015, 01:27
                        при вызове чанка с капчей получаю 500 (Internal Server Error)… Ключ создан. В чем может быть ошибка, подскажите пожалуйста?
                          Володя
                          Володя Эксперт
                          08 мая 2015, 08:51
                          не знаю, если можешь кинь доступы на vgrish@gmail.com — посмотрю…
                            nekto
                            nekto Старожил
                            12 мая 2015, 00:44
                            А yacaptcha_captcha_id можно оставлять стандартным или нужно менять, скажите пожалуйста?
                              Володя
                              Володя Эксперт
                              12 мая 2015, 08:00
                              Это идентификатор каптчи в сессии — можно не трогать, можно поменять…
                        Александр Н
                        Александр Н Проверенный
                        04 ноября 2015, 17:58
                        при установке ругается кажется на то, что не может подтянуть pdoTools, хотя тот стоит
                          Алексей
                          Алексей Проверенный
                          19 ноября 2016, 07:20
                          А где найти пакет? В магазине его почему-то нет…
                            Володя
                            Володя Эксперт
                            19 ноября 2016, 10:20
                            Сервис Яндекс.Чистый веб был закрыт. Каптча соответсвенно не работает.
                              Алексей
                              Алексей Проверенный
                              20 ноября 2016, 14:29
                              а какие сейчас альтернативы, не в курсе? чем можно заменить?
                                Владимир
                                Владимир Старожил
                                20 ноября 2016, 15:31
                                modx.com/extras/package/recaptchav2
                                Нормально работает с AjaxForm, кстати
                                  Володя
                                  Володя Эксперт
                                  20 ноября 2016, 17:21
                                  я вот такой каптчей пользуюсь при необходимости keith-wood.name/realPerson.html
                                    Алексей
                                    Алексей Проверенный
                                    20 ноября 2016, 20:10
                                    гуд, спасибо! на javascript + никаких изображений, псевдографика как будто из старых эхо-конференций фидо -))
                              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                              38