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 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
使用迭代器 遍历文件信息的详解
Jun 08 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
PHP加密解密函数详解
Oct 28 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
php+ajax简单实现全选删除的方法
Dec 06 PHP
php json_encode与json_decode详解及实例
Dec 13 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
JavaScript的类型简单说明
2010/09/03 Javascript
javascript 常用功能总结
2012/03/18 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Python装饰器知识点补充
2018/05/28 Python
Python异常处理操作实例详解
2018/08/28 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
男方父母证婚词
2014/01/12 职场文书
宿舍违规检讨书
2014/01/12 职场文书
2014年情人节活动方案
2014/02/16 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
二手车转让协议书
2015/01/29 职场文书
荆州古城导游词
2015/02/06 职场文书
护士心得体会范文
2016/01/25 职场文书
Java基础之this关键字的使用
2021/06/30 Java/Android