Laravel 5 IP范围验证

时间:2015-03-31 09:21:07

标签: validation laravel ip laravel-5

我使用 Laravel 5 作为我的项目,我需要使用自己的验证。我有IP范围表。 ( start_ip,起点ip-终点ip )。我需要检查我的ip范围是否可用。如何验证 laravel 5 中的ip范围?

2 个答案:

答案 0 :(得分:1)

如果你的ip范围表仅用于检查给定的ip是否属于网络,那么使用IPset包(lib)这是一种更简单的方法:

compser require wikimedia/ip-set

我在这里假设你只有一个网络(例如Validator::extend('ip_range',function ($attribute, $value, $parameters){ $ipset = new IPSet(array('192.168.1.0/24'); return ($ipset->match($value)); ),如果你有更多,你可以在数组中放入你想要的数量。更简洁的方法是编辑你的表并用cidr注释替换你的ips,并更新你的代码:

192.168.1.0/24

当然不要忘记

$ipset = new IPSet(DB::table('your_table')->lists('your_cidr_column'));

答案 1 :(得分:-1)

使用ip_range规则扩展验证程序:

Validator::extend('ip_range', function($attribute, $value, $parameters) {
    $ip = ip2long($value);
    $start_ip = ip2long($parameters[0]);
    $end_ip = ip2long($parameters[1]);

    if (!$ip || !$start_ip || !$end_ip) {
        return false;
    }

    return ($ip >= $start_ip && $ip <= $end_ip);
});

请勿忘记将ip_range值添加到lang/en/validation.php以显示人类可读的错误消息。