Yii2 captcha не работает

Содержание
  1. Почему Yii2 captcha не проходит проверку на стороне клиента?
  2. 5 ответов
  3. Проблема и лучшее решение.
  4. Не очень хорошая альтернатива вышеперечисленному:
  5. Yii Framework
  6. Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
  7. Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
  8. Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
  9. Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
  10. Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
  11. Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
  12. Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
  13. Re: Почему в Yii2 каптча всегда выдает *Неправильный проверочный код* при model->save()?
  14. Yii Framework
  15. captcha не работает
  16. captcha не работает
  17. Re: captcha не работает
  18. Re: captcha не работает
  19. Re: captcha не работает
  20. Re: captcha не работает
  21. Re: captcha не работает
  22. Re: captcha не работает
  23. Re: captcha не работает
  24. Re: captcha не работает
  25. Re: captcha не работает
  26. Re: captcha не работает
  27. Re: captcha не работает
  28. Re: captcha не работает
  29. Re: captcha не работает
  30. Re: captcha не работает
  31. Не могу пройти капчу, на чистом basic приложении. #9007
  32. Comments
  33. Ineigo commented Jul 5, 2015
  34. ismorodin commented Jul 5, 2015
  35. githubjeka commented Jul 5, 2015
  36. githubjeka commented Jul 5, 2015
  37. Ineigo commented Jul 5, 2015
  38. githubjeka commented Jul 5, 2015
  39. Ineigo commented Jul 6, 2015
  40. githubjeka commented Jul 6, 2015
  41. captcha is incorrect #6115
  42. Comments
  43. shyandsy commented Nov 19, 2014
  44. samdark commented Nov 19, 2014
  45. jafaripur commented Nov 19, 2014
  46. shyandsy commented Nov 19, 2014
  47. shyandsy commented Nov 19, 2014
  48. samdark commented Nov 19, 2014
  49. shyandsy commented Nov 19, 2014
  50. samdark commented Nov 19, 2014
  51. shyandsy commented Nov 20, 2014
  52. now the initial website is work correct
  53. title) ?>
  54. samdark commented Nov 20, 2014
  55. shyandsy commented Nov 20, 2014
  56. HLH12321 commented Nov 20, 2014
  57. shyandsy commented Nov 20, 2014
  58. samdark commented Nov 20, 2014
  59. martingeorg commented Nov 20, 2014

Почему Yii2 captcha не проходит проверку на стороне клиента?

Я использую модуль Yii2 admin , изображение captcha отображается в форме. После ввода кода проверки подсказки всегда отображали сообщение об ошибке на стороне клиента, но я уверен, что оно было введено правильно. Затем я просматриваю исходный код и обнаружил, что неправильно установил атрибут captchaAction ( \yii\captcha\CaptchaValidator ), значение по умолчанию captchaAction равно <>, но мой контроллер app\modules\admin\controllers\PublicController , я думаю, что значение captchaAction должно быть admin/public/captcha , но как его установить?

Ниже приведен код моей страницы просмотра:

Вот мой контроллер :

5 ответов

Будьте осторожны с формой, проверенной AJAX. Captcha Yii будет перезагружен, если вы подтвердите Ajax. Итак, в этом случае мы можем решить двумя способами:

  1. Отключите ajaxValidation , включите clientValidation . Например: форма регистрации
  1. Функция отмены проверки CaptchaAction , не getVerifyCode через AJAX.

Убедитесь, что у вас есть капча в правилах доступа для вашей роли.

Изменить правила формы модели

Проблема и лучшее решение.

В основном проблема обычно возникает при установке enableAjaxValidation для всей активной формы с помощью следующего кода.

По умолчанию используется проверка слайдов клиента, однако иногда проверка может выполняться только на стороне сервера, поэтому эта функция может быть приятной. В дополнение к глобальному параметру каждый отдельный вход может указывать использование enableAjaxValidation или нет. Однако по какой-то причине виджет Captcha явно не устанавливает для него значение false .

В большинстве случаев, когда для некоторых входных данных требуется проверка AJAX, вероятно, лучше оставить ее по умолчанию и включить ее для нужных элементов управления. Например, если у нас есть форма регистрации пользователя, в которой есть валидатор AJAX для проверки повторяющихся имен пользователей, мы можем включить его только для этого одного ввода.

Такой способ также дает нам некоторые другие преимущества, такие как сокращение количества запросов AJAX за счет проверки того, что вы можете делать на стороне клиента, и, по возможности, более быстрого ответа.

Читайте также:  Ваз 2114 не работает звуковой сигнал когда

Не очень хорошая альтернатива вышеперечисленному:

Вот более старое альтернативное решение, основанное на ответе @ 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

  • 3, 4, 8 could be replaced with Model instead of AR. Also no database settings are required. At least I don’t see any connection.
  • 5, 7 should not be related. It’s not about URLs.

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.

Источник

Оцените статью