Laravel URL验证使用验证器

时间:2019-02-07 07:38:57

标签: php laravel-5 laravel-5.2

我正在尝试验证URL,以确保它不包含localhost。我已经使用if-else完成了它,并且想要使用自定义验证程序来完成它。我不知道验证者怎么做。

if((strpos($request->input('url'), 'localhost') !== false) || 
    (strpos($request->input('url'), 'http://localhost') !== false) ||  
    (strpos($request->input('url'), 'https://localhost') !== false) ||  
    (strpos($request->input('url'), '127.0.0.1') !== false) ||
    (strpos($request->input('url'), 'http://127.0.0.1') !== false) ||
    (strpos($request->input('url'), 'http://127.0.0.1') !== false))
{
    return response()->json([
        'error_description' => 'Localhost in not allowed in URL'
    ], 403);
}

4 个答案:

答案 0 :(得分:0)

您可以使用url的{​​{1}}验证器

https://laravel.com/docs/5.2/validation#rule-url

答案 1 :(得分:0)

您已经可以通过现有验证和regex来实现它:

'url' => 'regex:/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?$/',

我没有对此进行测试,但是它具有现有的验证规则。

答案 2 :(得分:0)

您可以使用

'url'=> ['regex'=>'/^((?:https?://|www.)(?:[-a-z0-9]+.)[-a -z0-9] +。)$ /'],

我希望这会有用

答案 3 :(得分:0)

$messages = [
  'url.required' => 'Đường dẫn bắt buộc nhập',
  'url.url' => 'Url không hợp lệ'
];
    
$data = request()->validate([
  'url' => 'required|url',
], $messages);