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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
php中批量替换文件名的实现代码
Jul 20 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php之curl设置超时实例
Nov 03 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 PHP
详解no input file specified 三种解决方法
Nov 29 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电台频率大全 - 1 北京市
2020/03/11 无线电
php桌面中心(一) 创建数据库
2007/03/11 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
Python3访问并下载网页内容的方法
2015/07/28 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
python redis 删除key脚本的实例
2019/02/19 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
python判断是空的实例分享
2020/07/06 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
期中考试后的反思
2014/02/08 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2014年计生工作总结
2014/11/21 职场文书
运动会200米广播稿
2015/08/19 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书