【发布时间】:2016-04-13 19:22:44
【问题描述】:
我有一个页面,其中包含多个验证码,以单独的形式形成,例如登录和注册模式等。 如果我使用下面的代码,问题是当刷新一个验证码时,另一个验证码将无法使用,因为它们使用相同的会话变量:
1) 登录
登录模式(视图):
echo Captcha::widget([
'id' => 'Login-captcha',
'name' => 'LoginModel[captcha]',
'captchaAction' => '/site/captcha'
]);
登录模型:
public function rules()
{
return [
['captcha', 'captcha'],
];
}
2) 注册
注册模态(视图):
echo Captcha::widget([
'id' => 'register-captcha',
'name' => 'RegisterModel[captcha]',
'captchaAction' => '/site/captcha'
]);
注册模型:
public function rules()
{
return [
['captcha', 'captcha'],
];
}
为了解决会话问题,我使用了不同的验证码操作来设置不同的会话变量:
1)登录
登录模式视图:
echo Captcha::widget([
'id' => 'Login-captcha',
'name' => 'LoginModel[captcha]',
'captchaAction' => '/site/captcha-login'
]);
登录模型:
public function rules()
{
return [
['captcha', 'captcha', 'captchaAction' => 'site/captcha-login',],
];
}
2) 注册
注册模态(视图):
echo Captcha::widget([
'id' => 'register-captcha',
'name' => 'RegisterModel[captcha]',
'captchaAction' => '/site/captcha-register'
]);
注册模型:
public function rules()
{
return [
['captcha', 'captcha', 'captchaAction' => 'site/captcha-register',],
];
}
到目前为止一切正常,但是当我通过主配置文件的组件部分中的以下配置将会话从常规 php 文件移动到数据库时:
'session' => [
'class' => 'yii\web\DbSession',
],
然后第一页加载中的验证码不起作用,必须刷新它们才能正常工作。 有什么问题?
【问题讨论】: