核心函数代码如下:
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
|
/** * Enter description here ... */ function check_ip(){ $ALLOWED_IP = array ( '192.168.2.*' , '127.0.0.1' , '192.168.2.49' ); $IP =getIP(); $check_ip_arr = explode ( '.' , $IP ); //要检测的ip拆分成数组 #限制IP if (!in_array( $IP , $ALLOWED_IP )) { foreach ( $ALLOWED_IP as $val ){ if ( strpos ( $val , '*' )!==false){ //发现有*号替代符 $arr = array (); // $arr = explode ( '.' , $val ); $bl =true; //用于记录循环检测中是否有匹配成功的 for ( $i =0; $i <4; $i ++){ if ( $arr [ $i ]!= '*' ){ //不等于* 就要进来检测,如果为*符号替代符就不检查 if ( $arr [ $i ]!= $check_ip_arr [ $i ]){ $bl =false; break ; //终止检查本个ip 继续检查下一个ip } } } //end for if ( $bl ){ //如果是true则找到有一个匹配成功的就返回 return ; die ; } } } //end foreach header( 'HTTP/1.1 403 Forbidden' ); echo "Access forbidden" ; die ; } } * 获得访问的IP * Enter description here ... */ function getIP() { return isset( $_SERVER [ "HTTP_X_FORWARDED_FOR" ])? $_SERVER [ "HTTP_X_FORWARDED_FOR" ] :(isset( $_SERVER [ "HTTP_CLIENT_IP" ])? $_SERVER [ "HTTP_CLIENT_IP" ] : $_SERVER [ "REMOTE_ADDR" ]); } |
在需要检测的地方 加上调用 check_ip(); 即可; 本函数提供只允许指定的IP访问文件,并提供IP中*号通配符 匹配多IP