Добавляем CAPTCHA к форме

Обсуждение документации. Переводы Cookbook и авторские рецепты.
Ответить
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Добавляем CAPTCHA к форме

Сообщение samdark »

Аватара пользователя
BuCeFaL
Сообщения: 447
Зарегистрирован: 2010.03.17, 21:22
Откуда: Kiev
Контактная информация:

Re: Добавляем CAPTCHA к форме

Сообщение BuCeFaL »

Если есть аякс проверка на капчу, то после проверки значение капча меняеться, но картинка в браузере пользователя остаеться старой. Из за этого форма может "сабмититься" не с первого раза, не смотря на то что все данные введены правильно.
Решение:
При аякс запросе отключать валидатор капчи или обновлять капчу после запроса.

Если ли еще какие то методы решения ?
Аватара пользователя
badenkov
Сообщения: 79
Зарегистрирован: 2009.06.22, 09:05
Откуда: Ижевск
Контактная информация:

Re: Добавляем CAPTCHA к форме

Сообщение badenkov »

А как добавлять CAPTCHA в форму, если работаешь через построитель форм?
Аватара пользователя
паша
Сообщения: 6
Зарегистрирован: 2011.02.17, 01:57
Откуда: Волшебная страна

Re: Добавляем CAPTCHA к форме

Сообщение паша »

Я столкнулся с такой проблемой, что
GD and FreeType PHP extensions are required.
для её решения пришлось поставить php-gd
Ну это я так, если вдруг кто-нибудь еще мучается. Вроде нигде об этом не видел упоминания.

И да:
Отличные материалы по CAPTCHA на dbhelp.ru.
уже не такие уж и отличные, ибо очень устарели. Я по ним и пытался прикрутить капчу к стандартному демо-блогу, но после нескольких неудач вышел на сабж-статью. Она намного актуальнее.
Хотя, при определенной смекалке, и оттуда можно много пользы извлечь.
десу же
nbutikov
Сообщения: 2
Зарегистрирован: 2012.08.01, 19:02
Контактная информация:

Re: Добавляем CAPTCHA к форме

Сообщение nbutikov »

Сталкнулся с такой проблемой:
Прикрутил каптчу к контроллеру (main) в нем есть два экшена где она используется, но при переходе из одно экшена на другой картинка не меняется. Так же каптча не изменяется при обновлении страницы. Изменяется только в том случае когда кликнуть на обновлении каптчи. Причем после валидации если что то неправильно каптча обновляется, но картинка остается старой (пока не кликнишь на обновление каптчи).
Поставил кастыль ( $('#GetCapcha').trigger('click'); ) при обновлении и валидации, но это не правильный подход.
Как можно решить данную проблему?
resource
Сообщения: 2
Зарегистрирован: 2013.01.09, 01:12

Re: Добавляем CAPTCHA к форме

Сообщение resource »

Почитал статью, вроде бы все сделал по примеру, но возникла проблема с валидацией - поле ввода капчи не проверяется вообще.
Поковырялся - оказывается запись в моей модели

Код: Выделить всё

public $verifycode;
как атрибут отсутствует и, соответственно, значение введенное/не ведденное в форму пользователем не проверяется.

Возможно кто-то сталкивался с чем-то похожим?
ab.developer
Сообщения: 2
Зарегистрирован: 2014.01.21, 07:11

Re: Добавляем CAPTCHA к форме

Сообщение ab.developer »

Прочитал статью. Сделал новое приложение на Yii. Создал новую таблицу в базе данных. Через gii сделал , модель и crud. Переопределил defaultController на , работающий с таблицей. В этом контроллере сделал все actions доступными для всех пользователей. В форму создания записи добавил капчу по рецепту.

Подскажите, пожалуйста, почему картинка не отображается? Выглядит это так. Могу еще код приложить, но он один в один по рецепту.

Вообще, заметил что картинка с капчей также не отображается и в контактной форме стандартного приложения. Почему так может быть?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Добавляем CAPTCHA к форме

Сообщение samdark »

Для работы с картинками в PHP нужен GD или Imagemagick.
ab.developer
Сообщения: 2
Зарегистрирован: 2014.01.21, 07:11

Re: Добавляем CAPTCHA к форме

Сообщение ab.developer »

А проверить - загружены ли эти библиотеки можно как-то так?

Код: Выделить всё

<?php if (extension_loaded('gd')) {?>
    gd loaded
<? }
else {?>
    gd not loaded
<? } ?>

<?php if (extension_loaded('imagemagick')) {?>
    imagemagick loaded
<? }
else {?>
    imagemagick not loaded
<? } ?>
Добавил этот код в представление, сразу после формы.
На хостинге и на localhost выдало gd loaded imagemagick not loaded. А одной GD должно быть достаточно?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Добавляем CAPTCHA к форме

Сообщение samdark »

К ней ещё freetype нужен.
749984
Сообщения: 3
Зарегистрирован: 2014.03.20, 10:52

Re: Добавляем CAPTCHA к форме

Сообщение 749984 »

Без указания параметра captchaAction в модели, каптча валидацию не проходит. Пол дня потратил на чтение форума и поиск проблемы, каптча показывается, но валидация не проходит.

Предлагаю добавить комментарий по этому поводу в рецепт.

В отображение формы добавляем:

Код: Выделить всё

$this->controller->widget('CCaptcha', ['captchaAction' => '//site/captcha']);
В модель добавляем:

Код: Выделить всё

public function rules()
    {
        return [
            ['verifyCode', 'captcha', 'on' => 'insert',
                'allowEmpty' => !CCaptcha::checkRequirements(),
                'captchaAction' => '//site/captcha'
            ],
        ];
    }
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Добавляем CAPTCHA к форме

Сообщение samdark »

Сделаете в виде pull request-а сюда? https://github.com/samdark/yiiframework_ru_cookbook
Ответить