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 zend 相对路径问题
Jan 12 PHP
php 删除记录实现代码
Mar 12 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
php5.3 废弃函数小结
May 16 PHP
php图像处理类实例
Jul 28 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
Aug 18 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
yii通过小物件生成view的方法
Oct 08 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP defined()函数的使用图文详解
Jul 20 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 PHP
php操作redis数据库常见方法实例总结
Feb 20 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 cron中的批处理
2008/09/16 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
python2与python3共存问题的解决方法
2018/09/18 Python
python实现淘宝购物系统
2019/10/25 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
python GUI计算器的实现
2020/10/09 Python
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
2014年国庆节演讲稿
2014/09/19 职场文书
2015年国庆节寄语
2015/08/17 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
Java Spring读取和存储详细操作
2022/08/05 Java/Android