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+javascript实现二级级联菜单的制作
May 06 PHP
php下载远程文件类(支持断点续传)
Nov 14 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
php实现webservice实例
Nov 06 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
详解php语言最牛掰的Laravel框架
Nov 20 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 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 短链接算法收集与分析
2011/12/30 PHP
PHP输出时间差函数代码
2013/01/28 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
python中将字典转换成其json字符串
2014/07/16 Python
Python单元测试实例详解
2018/05/25 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
C++是不是类型安全的
2014/02/18 面试题
个人课题方案
2014/05/08 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
六一儿童节标语
2014/10/08 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
七年级作文之秋游
2019/10/21 职场文书