Yii2一页多验证码

Yii2一页多验证码,yii2,captcha,Yii2,Captcha,我有一个页面,包含多个单独形式的验证码,例如登录和注册模态等。 如果我使用以下代码,问题是当刷新一个验证码时,另一个验证码将不可用,因为它们使用相同的会话变量: 1) 登录 登录模式(视图): 登录模型: public function rules() { return [ ['captcha', 'captcha'], ]; } public function rules() { return [

我有一个页面,包含多个单独形式的验证码,例如登录和注册模态等。 如果我使用以下代码,问题是当刷新一个验证码时,另一个验证码将不可用,因为它们使用相同的会话变量:

1) 登录

登录模式(视图):

登录模型:

public function rules()
{
    return [              
        ['captcha', 'captcha'],
    ];
}
public function rules()
{
    return [              
        ['captcha', 'captcha', 'captchaAction' => 'site/captcha-login',],
    ];
}
2) 登记册

注册模式(视图):

注册表模型:

public function rules()
{
    return [              
        ['captcha', 'captcha'],
    ];
}
public function rules()
{
    return [              
        ['captcha', 'captcha', 'captchaAction' => 'site/captcha-register',],
    ];
}
为了解决会话问题,我使用了不同的验证码动作来设置不同的会话变量:

1) 登录

登录模式视图:

echo Captcha::widget([
    'id' => 'Login-captcha',
    'name' => 'LoginModel[captcha]',
    'captchaAction' => '/site/captcha'
]);
echo Captcha::widget([
    'id' => 'register-captcha',
    'name' => 'RegisterModel[captcha]',
    'captchaAction' => '/site/captcha'
]);
echo Captcha::widget([
    'id' => 'Login-captcha',
    'name' => 'LoginModel[captcha]',
    'captchaAction' => '/site/captcha-login'
]);
echo Captcha::widget([
    'id' => 'register-captcha',
    'name' => 'RegisterModel[captcha]',
    'captchaAction' => '/site/captcha-register'
]);
登录模型:

public function rules()
{
    return [              
        ['captcha', 'captcha'],
    ];
}
public function rules()
{
    return [              
        ['captcha', 'captcha', 'captchaAction' => 'site/captcha-login',],
    ];
}
2) 登记册

注册模式(视图):

注册表模型:

public function rules()
{
    return [              
        ['captcha', 'captcha'],
    ];
}
public function rules()
{
    return [              
        ['captcha', 'captcha', 'captchaAction' => 'site/captcha-register',],
    ];
}
到目前为止,一切正常,但当我通过主配置文件的commponent部分下面的配置将会话从常规php文件移动到数据库时:

'session' => [
     'class' => 'yii\web\DbSession',
 ],
然后,第一页加载中的CAPTCHA不起作用,必须刷新它们才能正常工作。
有什么问题吗?

试试这个,这是给yii1的,但你可以得到更多的想法

也看到