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 定界符 使用技巧
Jun 14 PHP
PHP 面向对象 final类与final方法
May 05 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
比较strtr, str_replace和preg_replace三个函数的效率
Jun 26 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 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
ftp类(myftp.php)
2006/10/09 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
javascript实现评分功能
2020/06/24 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
python能做什么 python的含义
2019/10/12 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
职业教育毕业生求职信
2013/11/09 职场文书
回门宴父母答谢词
2014/01/26 职场文书
聚美优品的广告词
2014/03/14 职场文书
开工典礼策划方案
2014/05/23 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
医院消毒隔离制度
2015/08/05 职场文书
企业法人任命书
2015/09/21 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers