验证码第一次验证错误

当我第一次进入一个页面的时候,提交表单,总是提示"验证码错误".

然后再重新修改下验证码,就ok了.

结合YII的官方BLog,发现Contact us的验证码第一次是验证成功的.

所以找了很久,才发现.如果页面中的代码中包含

,则第一次提交表单无法通过验证码的验证,去掉则可以了.希望有人能从根本上解决这个问题.


$form=$this->beginWidget('CActiveForm', array(

	'id'=>'register-form',

	'enableAjaxValidation'=>true,

));

这是因为使用enableAjaxValidation的时候,你输入一次,都会进行ajax请求,你是不是在验证的时候把captcha也加进去验证了,所以导致验证次数超过了你设定的次数?

楼上说的对,如果你不想改变流程,建议把验证码刷新的次数降低,可以改变testLimit这个值:


'captcha'=>array(

	'class'=>'CCaptchaAction',

	'testLimit'=>999,

),

Yes,你说的没错.不过如何可以让’enableAjaxValidation’=>false,的情况下,又不对验证码进行验证呢?如何设置?

这样会有一个弊端,就是验证码一定要验证999次,才会变一下.

到时候你就会有一个新的问题:"为什么我的验证码始终都一样?"了

好了.我知道了.

在RegsiterForm的rules的配置里


array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),

代码,修改成


array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements(),'on'=>'register'),

就可以设置,仅仅在提交这个action的时候,才对验证码进行验证了