Google reCaptcha 总是使用 laravel 5.1 重置

问题描述 投票:0回答:1

我在网上搜索过,但似乎有所不同。我正在使用

laravel5.1
并实现
google recaptcha
。情况是,如果提交表单并返回错误验证,则验证码会一次又一次重置,我想要的是不要再次重置它,只是保持验证状态,因为它会烦扰用户一次又一次验证。你对此有什么想法吗?

更新: 代码

public function postRegister(Request $request){
    // Validation
    $this->validate($request, [
        'username' => 'required|unique:users|max:20|min:3',
        'password' => 'required|min:6',
        'retype_password' => 'required|same:password',
        'email' => 'required|unique:users|email|max:255',
        'g-recaptcha-response' => 'required|recaptcha'
    ]);

    // Database save part here...

    return redirect()->route('register')->with('info', 'Success!');
}
php validation laravel-5 recaptcha
1个回答
1
投票

现在我正在尝试编写代码,这有点冗长,但您已经明白要点了。

首先验证您的验证码字段。如果它有效,请设置一个会话变量以防止它再次在您的表单中呈现。

public function postRegister(Request $request)
{
    // Prepare validation rules
    $defaultRules = [
        'username' => 'required|unique:users|max:20|min:3',
        'password' => 'required|min:6',
        'retype_password' => 'required|same:password',
        'email' => 'required|unique:users|email|max:255',
    ];
    $recaptchaRules = [
        'g-recaptcha-response' => 'required|recaptcha',
    ];

    // Set session if recaptcha is valid
    if (Validator::make($request->all(), $recaptchaRules)->passes()) {
        session(['recaptcha' => true]);
    } 
    // Add recaptcha rules to default rules if failed to get single message bag with all errors
    else {
        $defaultRules = array_merge($defaultRules, $recaptchaRules);
    }

    // Validation
    $this->validate($request, $defaultRules);

    // Database save part here...        

    // Reset recaptcha validity so that the recaptcha is displayed on the next submission
    session(['recaptcha' => false]);

    return redirect()->route('register')->with('info', 'Success!');
}

仅在尚未验证的情况下输出 Recaptcha 字段。

@unless (session('recaptcha'))
    {{ Recaptcha::render() }}
@endunless
© www.soinside.com 2019 - 2024. All rights reserved.