我使用 Laravel 5 作为我的项目,我需要使用自己的验证。我有IP范围表。 ( start_ip,起点ip-终点ip )。我需要检查我的ip范围是否可用。如何验证 laravel 5 中的ip范围?
答案 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
以显示人类可读的错误消息。