首页 > 解决方案 > 使用验证器验证 Laravel URL

问题描述

我正在尝试验证 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);
}

标签: phplaravel-5laravel-5.2

解决方案


您已经可以通过现有的验证和正则表达式来实现它:

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

我没有对此进行测试,但它对现有的验证规则很有创意。


推荐阅读