Google reCaptcha 总是用 laravel 5.1 重置
Google reCaptcha always resetting with laravel 5.1
我在网上搜索了一下,好像不太一样。我正在使用 laravel5.1
并实现了 google recaptcha
。场景是,如果表单被提交并且 returns 验证错误,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!');
}
现在我正在尝试编写代码,这有点冗长,但您明白了要点。
首先验证您的 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
我在网上搜索了一下,好像不太一样。我正在使用 laravel5.1
并实现了 google recaptcha
。场景是,如果表单被提交并且 returns 验证错误,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!');
}
现在我正在尝试编写代码,这有点冗长,但您明白了要点。
首先验证您的 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