如何验证欺骗输入字段名称的 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',
  ]

这将验证数组中的每个项目

参考https://laravel.com/docs/5.6/validation#validating-arrays

您可以使用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'
      ]);

希望这对您有所帮助