- Почему Yii2 captcha не проходит проверку на стороне клиента?
- 5 ответов
- Проблема и лучшее решение.
- Не очень хорошая альтернатива вышеперечисленному:
- 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()?
- 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 не работает
- Не могу пройти капчу, на чистом 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
- captcha is incorrect #6115
- Comments
- shyandsy commented Nov 19, 2014
- samdark commented Nov 19, 2014
- jafaripur commented Nov 19, 2014
- shyandsy commented Nov 19, 2014
- shyandsy commented Nov 19, 2014
- samdark commented Nov 19, 2014
- shyandsy commented Nov 19, 2014
- samdark commented Nov 19, 2014
- shyandsy commented Nov 20, 2014
- now the initial website is work correct
- title) ?>
- samdark commented Nov 20, 2014
- shyandsy commented Nov 20, 2014
- HLH12321 commented Nov 20, 2014
- shyandsy commented Nov 20, 2014
- samdark commented Nov 20, 2014
- martingeorg commented Nov 20, 2014
Почему 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 в вашем контроллере:
Измените действие рендеринга изображения в файле просмотра:
Источник
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
Источник
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. Заказ справки — работает везде.
Пробовал всё приводить к работающей форме, не помогает
Источник
Не могу пройти капчу, на чистом 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 на нужную папку, то капча проходит валидацию
Источник
captcha is incorrect #6115
Comments
shyandsy commented Nov 19, 2014
sitecontroller, the problem is on the actionContact
captcha file: vendor\yiii2soft\yii2\captcha\CaptchaAction.php
when the code run to $model->validate(), the captcha verify return true
but after that, in the process of $model->save(), the captcha is changed. and validate return false.
then I cant save data because the captcha is always incorrect
The text was updated successfully, but these errors were encountered:
samdark commented Nov 19, 2014
Do you have both backend and frontend on the same domain?
jafaripur commented Nov 19, 2014
Add Your captcha controller and action to validation rule.
[‘verifyCode’, ‘captcha’, ‘captchaAction’ => ‘user/captcha’, ‘caseSensitive’ => false,]
shyandsy commented Nov 19, 2014
I haven’t do anything on the backend.
shyandsy commented Nov 19, 2014
I just changed the initial project. You know there is a contactForm in the initial project.
Is that mean I should write a controller for all captcha by my self?
samdark commented Nov 19, 2014
No, you can use yii\captcha\CaptchaAction via actions method of controller.
shyandsy commented Nov 19, 2014
Hi, i tried that. but it does not work.
I just run the advanced template in the locally XAMPP environment.
and I guess this problem isnot about the request.
It is in same one request. The validate action is called twice.
but
in the vendor\yiii2soft\yii2\captcha\CaptchaAction.php
$code = $this->getVerifyCode();
it get different code for $model->validate() and $model->save();
samdark commented Nov 19, 2014
@shyandsy out of ideas. The best thing to do now is to try reproducing the problem with clean installation of advanced application + minimum amount of modifications for it. If it’s there then we’ll need clear steps on how to reproduce it locally.
shyandsy commented Nov 20, 2014
the following is the processing to reproding the same problem
1.composer setup the project
composer create-project —prefer-dist yiisoft/yii2-app-advanced reproducing
2.execute command
cd reproducing
init
(choose development mode)
3.phpmyadmin create database
create database reproducing
7.create .htaccess file in \frontend\web
now the initial website is work correct
8.use gii module to generate frontend\models\MessageBoard
9.modify the frontend\controller\SiteController.php, function actionContact
10.modify the \frontend\views\site\contact.php
title) ?>
If you have business inquiries or other questions, please fill out the following form to contact us. Thank you.
11.modify the \frontend\models\MessageBoard.php
now, you will see the captcha changed after $model->validate
samdark commented Nov 20, 2014
|
shyandsy commented Nov 20, 2014
@samdark
so what is that exact mean?
this is whole process to create a new project based initial project to show that problem
HLH12321 commented Nov 20, 2014
public function actions()
<
return [
‘error’ => [
‘class’ => ‘yii\web\ErrorAction’,
],
‘captcha’ => [
‘class’ => ‘yii\captcha\CaptchaAction’,
//’fixedVerifyCode’ => YII_ENV_TEST ? ‘testme’ : null,
‘TestLimit’=>99, //try it
],
];
>
shyandsy commented Nov 20, 2014
@HLH12321
I haven’t use the ContactForm model, instead , I create MessageBoard for myself
samdark commented Nov 20, 2014
I’m trying to isolate the problem by throwing out everything that is most probably not related to the problem.
martingeorg commented Nov 20, 2014
Hi, i ran into the same problem, here are some details i got so far
right before i output the captcha widget, i get the following output
The letters on the image are «jasamql», i enter them correctly, the client side validator accepts them
When i submit the form to the server, the result from this code executed in the Controller
is the following
as You can see the letters i had displayed in the captcha image are different from the
‘__captcha/site/captcha’ => string ‘hevevlu’ (length=7)
i am entering the captcha letters right after i refresh tha page, without any other interactions on the page
it is maybe important to say that i submit the form using jquery ajax post (using a method shown as an example here in Github by Qiang Xue) because Pjax was not right for the situation, so the form is submitted via Ajax call. As you can see the data for the captcha field is sent to the server successfully.
At the moment i don’t have idea what else to check for , so i’ll wait for some response.
We are using Yii 2.0 stable, advanced application and the backend and frontend are on different domains.
Tomorrow i may try to create a simple page with a simple model and form and see what happens then.
Источник