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 array_filter除去数组中的空字符元素
Jun 21 PHP
基于php缓存的详解
May 15 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
php连接mysql数据库
Mar 21 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
javascript背投广告代码的完善
2008/04/08 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
python实现简单爬虫功能的示例
2016/10/24 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
Python ellipsis 的用法详解
2020/11/20 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
团员个人的自我评价
2013/12/02 职场文书
高三政治教学反思
2014/02/06 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
导游词400字
2015/02/13 职场文书
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis