PHP实现限制IP访问的方法


Posted in PHP onApril 20, 2017

本文实例讲述了PHP实现限制IP访问的方法。分享给大家供大家参考,具体如下:

//获取客户端ip
if (getenv("HTTP_CLIENT_IP"))
  $ip = getenv("HTTP_CLIENT_IP"); 
else if(getenv("HTTP_X_FORWARDED_FOR"))
  $ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
  $ip = getenv("REMOTE_ADDR");
else $ip = "Unknow";
$ALLOWED_IP=array('10.144.39.132');
//允许访问的ip
$check_ip_arr= explode('.',$ip);
//ip参数拆分成数组
if(!in_array($ip,$ALLOWED_IP)) {
  $bl=false;
  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则终止匹配
        break;
      }
    }
  }
  //end foreach
  if(!$bl){
    $return=array(
       'status'=>2,
       'msg'=>'该IP无权限访问',
       'data'=>$ip
       );
    echo json_encode($return);
    exit();
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
PHP file_exists问题杂谈
May 07 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
用 Composer构建自己的 PHP 框架之构建路由
Oct 30 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
php 运算符与表达式详细介绍
Nov 30 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
May 20 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
PHP简单读取xml文件的方法示例
Apr 20 #PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 #PHP
PHP实现根据数组的值进行分组的方法
Apr 20 #PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 #PHP
php简单随机字符串生成方法示例
Apr 19 #PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 #PHP
PHP获取文本框、密码域、按钮的值实例代码
Apr 19 #PHP
You might like
php 强制下载文件实现代码
2013/10/28 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php命令行用法入门实例教程
2014/10/27 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
破解Session cookie的方法
2006/07/28 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python3实现二叉树的最大深度
2019/09/30 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
2020/04/20 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
开业庆典主持词
2014/03/21 职场文书
某某同志考察材料
2014/05/28 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python