我有一个页面,其中包含分离表单中的多个验证码,例如登录和注册模式等。 如果我使用下面的代码问题是当刷新一个验证码时,另一个验证码将无法使用,因为它们使用相同的会话变量:
1)登录
登录模式(查看):
List<Product> products=new ArrayList<>();
Collections.sort(products);
LoginModel:
Figaro gem
2)注册
注册模式(视图):
application.yml
RegisterModel:
secrets.yml
解决会话问题我使用不同的验证码操作来设置不同的会话变量:
1)登录
登录模式视图:
gitignore
LoginModel:
echo Captcha::widget([
'id' => 'Login-captcha',
'name' => 'LoginModel[captcha]',
'captchaAction' => '/site/captcha'
]);
2)注册
注册模式(视图):
public function rules()
{
return [
['captcha', 'captcha'],
];
}
RegisterModel:
echo Captcha::widget([
'id' => 'register-captcha',
'name' => 'RegisterModel[captcha]',
'captchaAction' => '/site/captcha'
]);
直到现在一切正常,但是当我将常规php文件中的会话通过主配置文件的commponent部分中的下面的配置移动到数据库时:
public function rules()
{
return [
['captcha', 'captcha'],
];
}
然后第一页中的验证码加载不起作用,必须刷新它们才能正常工作。 有什么问题?
答案 0 :(得分:0)
试试这个,它适用于yii1,但你可以得到这个想法,更多detail
public function rules()
{
return array(
...
array('verifyCode1', 'captcha', ...
array('verifyCode2', 'verifycaptcha2', ...
);
}
public function verifycaptcha2($attribute, $params)
{
$captcha2 = Yii::app()->getController()->createAction('captcha2nd');
if (!$captcha2->validate($this->verifyCode2, false))
{
$this->addError('verifyCode2', 'invalid captcha.');
}
}
另见this