我正在尝试查找来自特定公司的用户(使用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";
}
}
?>
答案 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";
}
}