本文实例为大家分享了php判断IP地址是否在多个IP段内的具体代码,供大家参考,具体内容如下
IP.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
<?php
class Ip {
/**
* 取IP
* @return string
*/
public static function get() {
if ( $_SERVER [ 'HTTP_CLIENT_IP' ] && $_SERVER [ 'HTTP_CLIENT_IP' ]!= 'unknown' ) {
$ip = $_SERVER [ 'HTTP_CLIENT_IP' ];
} elseif ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ] && $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]!= 'unknown' ) {
$ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ];
} else {
$ip = $_SERVER [ 'REMOTE_ADDR' ];
}
return $ip ;
}
/**
* IP转成整形数值
* @param string $ip IP
* @return int
*/
public static function ipToInt( $ip ) {
$ips = explode ( '.' , $ip );
if ( count ( $ips )==4) {
$int = $ips [0]*256*256*256+ $ips [1]*256*256+ $ips [2]*256+ $ips [3]; //根据IP,a,b,c类进行计算
} else {
//throw new Exception('ip is error');
Tool::Alert( 'IP地址存在错误...' ); //一个工具类,弹出提示信息
}
return $int ;
}
/**
* 判断IP是否在一个IP段内
* @param string $startIp 开始IP
* @param string $endIp 结束IP
* @param string $ip IP
* @return bool
*/
public static function isIn( $startIp , $endIp , $ip ) {
$start = Ip::ipToInt( $startIp );
$end = Ip::ipToInt( $endIp );
$ipInt = Ip::ipToInt( $ip );
$result = false;
if ( $ipInt >= $start && $ipInt <= $end ) {
$result = true;
}
return $result ;
}
}
?>
|
IpRang.class.php
1
2
3
4
5
6
7
8
9
|
<? php
//将不同的IP段存储到数组中..
$ iprang = array (
array('222.243.159.1','222.243.159.255'),
array('10.1.1.1','10.1.1.255')
);
?>
|
test.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
require_once 'Tool.class.php' ; //工具类
require_once 'IP.class.php' ; //IP类
require_once 'IpRang.class.php' ; //IP段范围
$ip = IP::get(); //获取IP地址
$tag = '1' ;
foreach ( $iprang as $key => $value ){
if (!IP::isIn( $value [0], $value [1], $ip )){
continue ;
} else {
$tag .= $key ;
}
}
if (mb_strlen( $tag , 'utf-8' )==1){
echo "<script src='/iplookup/iplookup.php?format=js&ip=" . $ip . "' type='text/javascript'></script>" ; //调用新浪IP接口
echo "<script type='text/javascript'>alert('很遗憾,您所用的设备网络不在某某范围内...\\n" . $ip . "\\n'+remote_ip_info.province+remote_ip_info.city+remote_ip_info.district); $(\"input[name='submit']\").attr(\"disabled\",true);</script>" ;
//弹出提示框,显示IP地址、地址以及将提交按钮置为不可用状态
}
?>
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/luowei85520/article/details/77983868