查找用户IP并查看是否匹配ips的范围

时间:2016-05-26 11:30:15

标签: php

我正在尝试查找来自特定公司的用户(使用i.p地址)并通过网络表单捕获他们的个人数据。

之前我想找到一个用户的i.p地址,看看它是否出现在i.p的单一范围内,但我希望定义多个ip范围并且只匹配指定的那些:

- 查找用户ip - 看它是否匹配任何设置的ip范围 - 如此表现形式别无所事事

我将以下代码作为示例:

<?php

$ip = $_SERVER['REMOTE_ADDR'];

$private_ip_ranges = array();

$range = (object) array();
$range->name = 'Media';
$range->lower = '212.1.0.0';
$range->upper = '212.1.255.255';
$private_ip_ranges[] = $range

$range = (object) array();
$range->name = 'Media 2';
$range->lower = '213.1.0.0';
$range->upper = '213.1.255.255';
$private_ip_ranges[] = $range

foreach ($private_ip_ranges as $ip_range) {
    if (in_ip_range($ip, $range->lower, $range->upper)) {
        echo "webform";
    }
}





?>

1 个答案:

答案 0 :(得分:2)

比较前使用ip2long功能

if (($lngIP=ip2long($ip)) < 0) $lngIP += 4294967296;  

foreach ($private_ip_ranges as $ip_range) {
   if (($lngLow=ip2long($ip_range->lower)) < 0) $lngLow += 4294967296;
   if (($lngHigh=ip2long($ip_range->upper)) < 0) $lngHigh += 4294967296;
   if($lngIP >= $lngLow and $lngIP <= $lngHigh) {
        echo "webform";
    }
}