如何验证欺骗输入字段名称的 laravel 输入?
How to validate the laravel input for spoofed input field name?
我有一个输入字段:
<input type="email" name="email" />
它与 laravel 验证规则一起工作正常:
$rules = [
'email' => 'email|required',
]
但是如果有人使用控制台更改 HTML 输入字段名称,例如:
<input type="email" name="email[]" />
Laravel 未捕获验证并且 returns 出现错误:
有没有更好的方法来处理 laravel 中的此类输入操作?
感谢您的帮助!
验证器失败,因为预期值为字符串,但提交的值为数组。您可以通过强制验证器只接受字符串和 return 错误来捕获此验证,如果值是数组,请尝试将 string
添加到您的验证规则中。
如果您要验证额外的规则,您还可以创建自定义验证规则
您可以在 https://laravel.com/docs/5.6/validation#available-validation-rules
尝试不同的验证规则
希望对您有所帮助
更改您的验证规则
$rules = [
'email' => 'string|email|required',
]
你可以使用
$rules = [
'email.*' => 'email|required',
]
这将验证数组中的每个项目
您可以使用is_array()
函数
例如
if(is_array($request->name))
abort(500, "The \"name\" field can't be array");
或使用简短的 if 语句:
!isset($request->name)
?: is_array($request->name)
? abort(500, "The \"name\" field can't be array")
: $validation = $request->validate([
'site' => 'required|string|email'
]);
希望这对您有所帮助
我有一个输入字段:
<input type="email" name="email" />
它与 laravel 验证规则一起工作正常:
$rules = [
'email' => 'email|required',
]
但是如果有人使用控制台更改 HTML 输入字段名称,例如:
<input type="email" name="email[]" />
Laravel 未捕获验证并且 returns 出现错误:
有没有更好的方法来处理 laravel 中的此类输入操作?
感谢您的帮助!
验证器失败,因为预期值为字符串,但提交的值为数组。您可以通过强制验证器只接受字符串和 return 错误来捕获此验证,如果值是数组,请尝试将 string
添加到您的验证规则中。
如果您要验证额外的规则,您还可以创建自定义验证规则
您可以在 https://laravel.com/docs/5.6/validation#available-validation-rules
尝试不同的验证规则希望对您有所帮助
更改您的验证规则
$rules = [
'email' => 'string|email|required',
]
你可以使用
$rules = [
'email.*' => 'email|required',
]
这将验证数组中的每个项目
您可以使用is_array()
函数
例如
if(is_array($request->name))
abort(500, "The \"name\" field can't be array");
或使用简短的 if 语句:
!isset($request->name)
?: is_array($request->name)
? abort(500, "The \"name\" field can't be array")
: $validation = $request->validate([
'site' => 'required|string|email'
]);
希望这对您有所帮助