2017-08-09 6 views
0

私はインターネット上でそれについて調べましたが、それは異なっているようです。私はlaravel5.1を使用しており、google recaptchaを実装しています。このシナリオは、フォームが提出され、エラーのある妥当性検証を返した場合、recaptchaは何度も再設定されます。何度も再検証します。あなたはこれについて何か考えていますか?Google reCaptchaは常にlaravel 5.1でリセットしています

更新:コードの

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!'); 
} 
+0

で、captchaを検証できませんでした有効な場合は、もう一度それを必要としないようにセッション変数を設定して、フォームからそれを削除しますか? – fubar

+0

こんにちは。あなたはそれ以上の詳細で答えることができますか?それはちょっと混乱します。 – Jonjie

+0

いくつかのコードを投稿できますか? – fubar

答えて

1

これは、今私は、コードを記述しようとしていますことをもう少し冗長ですが、要点を得ます。

Recaptchaフィールドを最初に検証します。有効な場合は、セッション変数を設定してフォームに再び表示されないようにします。

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 
+0

これは少しバグがあります。しかし、私は考えを持って、これは素晴らしいです! – Jonjie

+0

私は '$ this-> validate()'を使って自分の間違いを見つけましたが、うまくいけば分かりました。 – fubar

関連する問題