2017-08-09 76 views
0

我在互聯網上搜索它,但它似乎是不同的。我正在使用laravel5.1並實施了google recaptcha。這種情況是,如果表單被提交併返回錯誤驗證,那麼recaptcha會一次又一次地重新設置,我想要的是不要重新設置它,只是保持驗證狀態,因爲它會讓用戶反覆驗證。你有什麼想法嗎?谷歌reCaptcha總是重置與拉拉維爾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

您是否可以驗證驗證碼,如果有效,請將會話變量設置爲不再需要,並從窗體中刪除它? – 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