2015-03-31 102 views
0

我使用Laravel 5爲我的項目,我需要使用我自己的驗證。我有IP範圍表。 (start_ip,end_ip)。我需要檢查我的IP範圍是否可用。我如何驗證IP範圍laravel 5Laravel 5 IP範圍驗證

+0

如果你滿意我的回答下面,你可以接受它:) – 2015-04-06 07:42:03

回答

-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有人類可讀的錯誤消息。

1

如果您的IP範圍表只是用來檢查一個給定的IP屬於網絡,這裏是使用IPset包(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)); 

我假設這裏你只有一個網絡(例如192.168.1.0/24),如果你有更多,你可以在陣列中儘可能多地放置。一個清潔的方法是編輯您的表格,並與CIDR註釋更換您的IPS和更新代碼:

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

當然,不要忘了

use DB; 
use IPset\Ipset;