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遍历文件夹下的所有文件和子文件夹示例
Mar 20 PHP
php检测useragent版本示例
Mar 24 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
php实现通过ftp上传文件
Jun 19 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
php in_array() 检查数组中是否存在某个值详解
Nov 23 PHP
php修改数组键名的方法示例
Apr 15 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
php屏蔽错误及提示的方法
May 10 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更快的提供文件下载的代码
2012/06/13 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
JS实现动态无缝轮播
2020/01/11 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
Python全排列操作实例分析
2018/07/24 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
Python之多进程与多线程的使用
2021/02/23 Python
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
会计学专业求职信
2014/07/17 职场文书
机关党员公开承诺书
2014/08/30 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
nginx日志格式分析和修改
2022/04/28 Servers