- Почему Yii2 captcha не проходит проверку на стороне клиента?
- 5 ответов
- Проблема и лучшее решение.
- Не очень хорошая альтернатива вышеперечисленному:
- Как правильно подключить reCapcha на yii2?
- Yii Framework
- captcha не работает
- captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Re: captcha не работает
- Yii Framework
- Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
- Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
- Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
- Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
- Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
- Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
- Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
- Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
- Не могу пройти капчу, на чистом basic приложении. #9007
- Comments
- Ineigo commented Jul 5, 2015
- ismorodin commented Jul 5, 2015
- githubjeka commented Jul 5, 2015
- githubjeka commented Jul 5, 2015
- Ineigo commented Jul 5, 2015
- githubjeka commented Jul 5, 2015
- Ineigo commented Jul 6, 2015
- githubjeka commented Jul 6, 2015
Почему Yii2 captcha не проходит проверку на стороне клиента?
Я использую модуль Yii2 admin , изображение captcha отображается в форме. После ввода кода проверки подсказки всегда отображали сообщение об ошибке на стороне клиента, но я уверен, что оно было введено правильно. Затем я просматриваю исходный код и обнаружил, что неправильно установил атрибут captchaAction ( \yii\captcha\CaptchaValidator ), значение по умолчанию captchaAction равно <
Ниже приведен код моей страницы просмотра:
Вот мой контроллер :
5 ответов
Будьте осторожны с формой, проверенной AJAX. Captcha Yii будет перезагружен, если вы подтвердите Ajax. Итак, в этом случае мы можем решить двумя способами:
- Отключите ajaxValidation , включите clientValidation . Например: форма регистрации
- Функция отмены проверки CaptchaAction , не getVerifyCode через AJAX.
Убедитесь, что у вас есть капча в правилах доступа для вашей роли.
Изменить правила формы модели
Проблема и лучшее решение.
В основном проблема обычно возникает при установке enableAjaxValidation для всей активной формы с помощью следующего кода.
По умолчанию используется проверка слайдов клиента, однако иногда проверка может выполняться только на стороне сервера, поэтому эта функция может быть приятной. В дополнение к глобальному параметру каждый отдельный вход может указывать использование enableAjaxValidation или нет. Однако по какой-то причине виджет Captcha явно не устанавливает для него значение false .
В большинстве случаев, когда для некоторых входных данных требуется проверка AJAX, вероятно, лучше оставить ее по умолчанию и включить ее для нужных элементов управления. Например, если у нас есть форма регистрации пользователя, в которой есть валидатор AJAX для проверки повторяющихся имен пользователей, мы можем включить его только для этого одного ввода.
Такой способ также дает нам некоторые другие преимущества, такие как сокращение количества запросов AJAX за счет проверки того, что вы можете делать на стороне клиента, и, по возможности, более быстрого ответа.
Не очень хорошая альтернатива вышеперечисленному:
Вот более старое альтернативное решение, основанное на ответе @ AnHuy.
В контроллере с действием captcha ( SiteController при использовании начальных проектов Yii2) найдите раздел actions .
Замените yii\captcha\CaptchaAction на свой собственный путь к классу, который будет подклассом действия Yii, в этом случае я буду использовать app\models\captcha\CaptchaAction .
Теперь создайте подкласс действия, в данном случае models/captcha/CaptchaAction.php .
В основном он проверяет, является ли это проверкой проверки AJAX, и в этом случае возвращает истину, пропуская истекающую проверку проверки. В противном случае проверка выполняется как обычно.
При использовании капчи вне SiteController вы должны внести изменения в 3 файла:
Определите captchaAction в методе маршрута модели, где вы определили саму проверку captcha:
Определите действие captcha в вашем контроллере:
Измените действие рендеринга изображения в файле просмотра:
Источник
Как правильно подключить reCapcha на yii2?
Привет народ, подскажите где ошибся, или я дурак или лыжи не едут. Подключаю плагин reCaptcha https://github.com/himiklab/yii2-recaptcha-widget, все работает, но валидация не пропускает чего-то.
В файле web.php подключил :
// Капча
‘reCaptcha’ => [
‘name’ => ‘reCaptcha’,
‘class’ => ‘himiklab\yii2\recaptcha\ReCaptcha’,
‘siteKey’ => ‘6LcyeS0UAAAAAGtTPNZ6AUyIhXXXXXXXXXX,
‘secret’ => ‘6LcyeS0UAAAAAG0ugrwlS9p9_-9XXXXXXXXXX’,
],
в модели в правилах указал капчу как обязательное поле и класс самого расширения:
class Reviews extends ActiveRecord
<
public $image;
public $reCaptcha;
// Правила
public function rules()
<
return [
//Обязательные к заполнению
[[‘review’,’name’,’city’,’reCaptcha’], ‘required’, ‘message’ => ‘Поле не может быть пустым ↓’],
// Проверяем длину сообщения
[[‘review’], ‘string’, ‘length’ => [100, 400], ‘tooLong’ => ‘Сообщение не должно превышать 400 символов’,’tooShort’ => ‘Сообщение должно содержать минимум 100 символов’],
//Формат изображения
[[‘image’], ‘file’, ‘extensions’ => ‘png, jpg’],
[[‘reCaptcha’], \himiklab\yii2\recaptcha\ReCaptchaValidator::className(), ‘secret’ => ‘6LcyeS0UAAAAAG0ugrwlS9pXXXXXXXX’, ‘uncheckedMessage’ => ‘Please confirm that you are not a bot.’]
];
>
‘rew-form’,
‘layout’ => ‘horizontal’,
‘options’ => [‘class’ => ‘modal_rewiews_input’,’enctype’ => ‘multipart/form-data’],
‘fieldConfig’ => [
‘template’ => «
‘labelOptions’ => [‘class’ => »],
],
]) ?>
field($model, ‘image’)->fileInput([‘class’ => ‘upload modal_rewiews_input’,’id’ => ‘files’])->label(false);?>
field($model, ‘name’)->textInput([‘placeholder’ => ‘Имя фамилия’])->label(false) ?>
field($model, ‘city’)->textInput([‘placeholder’ => ‘Город’])->label(false) ?>
field($model, ‘review’)->textarea([‘rows’ => 4, ‘id’ => ‘good_reviews’, ‘placeholder’ => ‘Хорошие отзывы’])->label(false) ?>
‘btn btn-primary main_btn form_btn’, ‘name’ => ‘button’]) ?>
если убираю reCapcha из обязательных полей то пропускает, но естественн тогда вообще смысл подключения теряется.
Не подскажите правильный порядок подключения?
Источник
Yii Framework
captcha не работает
captcha не работает
Re: captcha не работает
Сообщение maleks » 2016.05.18, 07:50
Re: captcha не работает
Re: captcha не работает
Сообщение maleks » 2016.05.18, 21:04
Если все равно не работает, то дебажьте, ищите проблему, и репортите баг.
Re: captcha не работает
Сообщение lgXenos » 2016.05.18, 21:19
И Вам ваучер.
Сегодня на работе тоже была «проблема» с капчей. Как оказалось — все очень индивидуально для каждого велосипеда.
Был контроллер регистрации из двух экшенов: new и success
Тип регистрации раздвоился. Коллега, недолго думая, сделал route: /register/ => register/new
Капча отвалилась.
Т.к. она была добавлена в этот же контроллер. И этот роут ее просто перезаписал
Re: captcha не работает
Если все равно не работает, то дебажьте, ищите проблему, и репортите баг.
Re: captcha не работает
И Вам ваучер.
Сегодня на работе тоже была «проблема» с капчей. Как оказалось — все очень индивидуально для каждого велосипеда.
Был контроллер регистрации из двух экшенов: new и success
Тип регистрации раздвоился. Коллега, недолго думая, сделал route: /register/ => register/new
Капча отвалилась.
Т.к. она была добавлена в этот же контроллер. И этот роут ее просто перезаписал
Re: captcha не работает
Сообщение lgXenos » 2016.05.19, 19:57
Re: captcha не работает
Сообщение GroZa » 2016.05.20, 11:35
Re: captcha не работает
Re: captcha не работает
Сообщение lgXenos » 2016.05.20, 23:10
Я б все таки предложил покидать капчу по разным контроллерам. Ибо запись ‘captchaAction’ => ‘/main/default/captcha’ по идее ищет в модуле main, контроллере а потом экшене
Re: captcha не работает
Я б все таки предложил покидать капчу по разным контроллерам. Ибо запись ‘captchaAction’ => ‘/main/default/captcha’ по идее ищет в модуле main, контроллере а потом экшене
Re: captcha не работает
Re: captcha не работает
Re: captcha не работает
Сообщение Jluct » 2016.07.07, 10:43
Доброго времени суток! Примерно такая же проблема(
Использую basic 2.0.8.
В форму записываю например «reloko», а после отправки формы, в сессии уже напр. «[__captcha/site/captcha] => zrmuoo», и captcha становится не валидной.
Притом, что странно. В приложении, я использую captcha в 3х формах и вот какой результат:
1. Контакты — работает на моём локальном сервере, на продакшене нет.
2. Курсы — нигде не работает.
3. Заказ справки — работает везде.
Пробовал всё приводить к работающей форме, не помогает
Источник
Yii Framework
Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
Сообщение EVOSandru6 » 2017.11.14, 08:13
Есть такая проблема. Сделал Captcha для формы заказов аналогично как у контактов по умолчанию:
Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
Сообщение Dominus » 2017.11.14, 11:31
В виде и в правилах модели.
И еще проверьте правило маршрутизации в urlManager
Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
Сообщение urichalex » 2017.11.14, 12:45
В виде и в правилах модели.
И еще проверьте правило маршрутизации в urlManager
роут нужно указывать в массиве, иначе это обычный урл и, если изменятся правила роутинга, будет 404
Автор, аякс валидация включена у формы?
Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
Сообщение Dominus » 2017.11.14, 16:10
Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
Сообщение urichalex » 2017.11.14, 16:22
Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
Сообщение Dominus » 2017.11.14, 17:16
При таком раскладе всё работает корректно.
Если указать в View
Картинка отображается, валидация проходит только 1 раз. При обновлении картинки и вводе кода, валидация не проходит.
Если так же указать в правилах модели
В общем то я не стал заморачиваться и оставил так, как корректно работает.
Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
Сообщение EVOSandru6 » 2017.11.15, 06:50
Источник
Не могу пройти капчу, на чистом basic приложении. #9007
Comments
Ineigo commented Jul 5, 2015
На днях установил гит, композер, установил, по описанию в офф документации yii2 basic. Зашел в форму отправки сообщения и попытался отправить форму. Но валидация капчи не проходит, типо неверно ввел.
Совсем ни чего не менял.
Среда запуска: php 5.6, сервер запускал из папки web командой php -S localhost:8888, приложение запускал в трех браузерах: Хром, ИЕ, Мозила.
Подскажите с чем это может быть связано и как решить проблему?
The text was updated successfully, but these errors were encountered:
ismorodin commented Jul 5, 2015
Попробуй почитать здесь #1456
githubjeka commented Jul 5, 2015
@ismorodin тут не связано с ajax валидацией.
Тут при clientValidateAttribute =false всё успешно проходит, а как только при clientValidateAttribute=true (как по умолчанию в basic приложении для contact формы) уже не работает.
githubjeka commented Jul 5, 2015
@Ineigo а какие-нибудь ошибки есть в debug браузера?
Ineigo commented Jul 5, 2015
В том и дело, что ни ошибок, ни запросов, ни чего. Запрос выполняется только при нажатии на картинку(смена кода капчи)
@ismorodin Спасибо но я не дружу с английским, завтра попробую перевести)
githubjeka commented Jul 5, 2015
Запрос не должен отправляться.
Каптча хранится в виде hash числа(как сумма кодов каждого символа), это число получает на стороне сервера и передаётся в html. При вводе каптчи, в браузере с помощью js ( charCodeAt) получается число — сумма юникодов каждого символа, которые вы ввели. Эта сумма сравнивается с hash и если это утверждение неверно, то вы получаете ошибку, что капчта введена неверно.
Поэтому очень странно, что у вас всегда hash не равен верной каптче.
Ineigo commented Jul 6, 2015
Попробовал на работе тоже сделать, у меня капча прошла валидацию.
Немного пошалив со средой запуска(сервер локальный) свелся к выводу:
«Если запускать yii 2 приложение из консоли командой php -S localhost:8888, то капча не проходит валидацию. Если пошаманить с Denwer настройками apache2 на нужную папку, то капча проходит валидацию.»
Может кто сможет мне подсказать почему так происходит.
П.С.: Просто удобно запускать (php -S localhost:8888) из папки yii2, когда только изучаешь.
githubjeka commented Jul 6, 2015
Если пошаманить с Denwer настройками apache2 на нужную папку, то капча проходит валидацию
Источник