相关关键词
关于我们
最新文章
PHP 只允许指定IP访问(允许*号通配符过滤IP)
发布日期:2014-07-09 00:00:00
356
今天有朋友问我如何只允许指定IP访问,默认禁止其它ip访问,脚本之家小编以前分享的是如何限制指定ip访问,这里正好分享下,需要的朋友可以参考下
核心函数代码如下:
01 |
/** |
02 |
* 检测访问的ip是否为规定的允许的ip |
03 |
* Enter description here ... |
04 |
*/ |
05 |
function check_ip(){ |
06 |
$ALLOWED_IP = array ( '192.168.2.*' , '127.0.0.1' , '192.168.2.49' ); |
07 |
$IP =getIP(); |
08 |
$check_ip_arr = explode ( '.' , $IP ); //要检测的ip拆分成数组 |
09 |
#限制IP |
10 |
if (!in_array( $IP , $ALLOWED_IP )) { |
11 |
foreach ( $ALLOWED_IP as $val ){ |
12 |
if ( strpos ( $val , '*' )!==false){ //发现有*号替代符 |
13 |
$arr = array (); // |
14 |
$arr = explode ( '.' , $val ); |
15 |
$bl =true; //用于记录循环检测中是否有匹配成功的 |
16 |
for ( $i =0; $i <4; $i ++){ |
17 |
if ( $arr [ $i ]!= '*' ){ //不等于* 就要进来检测,如果为*符号替代符就不检查 |
18 |
if ( $arr [ $i ]!= $check_ip_arr [ $i ]){ |
19 |
$bl =false; |
20 |
break ; //终止检查本个ip 继续检查下一个ip |
21 |
} |
22 |
} |
23 |
} //end for |
24 |
if ( $bl ){ //如果是true则找到有一个匹配成功的就返回 |
25 |
return ; |
26 |
die ; |
27 |
} |
28 |
} |
29 |
} //end foreach |
30 |
header( 'HTTP/1.1 403 Forbidden' ); |
31 |
echo "Access forbidden" ; |
32 |
die ; |
33 |
} |
34 |
} |
35 |
* 获得访问的IP |
36 |
* Enter description here ... |
37 |
*/ |
38 |
function getIP() { |
39 |
return isset( $_SERVER [ "HTTP_X_FORWARDED_FOR" ])? $_SERVER [ "HTTP_X_FORWARDED_FOR" ] |
40 |
:(isset( $_SERVER [ "HTTP_CLIENT_IP" ])? $_SERVER [ "HTTP_CLIENT_IP" ] |
41 |
: $_SERVER [ "REMOTE_ADDR" ]); |
42 |
} |
在需要检测的地方 加上调用 check_ip(); 即可; 本函数提供只允许指定的IP访问文件,并提供IP中*号通配符 匹配多IP