PHP 只允许指定IP访问(允许*号通配符过滤IP)


Posted in PHP onJuly 08, 2014

核心函数代码如下:

/**
 * 检测访问的ip是否为规定的允许的ip
 * 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 

PHP 相关文章推荐
PHP初学者头疼问题总结
Jul 08 PHP
桌面中心(二)数据库写入
Oct 09 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
php 学习资料零碎东西
Dec 04 PHP
具有时效性的php加密解密函数代码
Jun 19 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 #PHP
php之Smarty模板使用方法示例详解
Jul 08 #PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 #PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 #PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 #PHP
PHP的error_reporting错误级别变量对照表
Jul 08 #PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 #PHP
You might like
php下将XML转换为数组
2010/01/01 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php实现图片添加水印功能
2014/02/13 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
node.js实现的装饰者模式示例
2017/09/06 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
python读写文件操作示例程序
2013/12/02 Python
Python 抓取动态网页内容方案详解
2014/12/25 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
python元组拆包实现方法
2021/02/28 Python
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
开会迟到检讨书
2014/02/03 职场文书
升学宴演讲稿
2014/09/01 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis