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 相关文章推荐
PHP 和 MySQL 基础教程(二)
Oct 09 PHP
PHP 多进程 解决难题
Jun 22 PHP
php与paypal整合方法
Nov 28 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
Apr 24 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
Jun 05 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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执行速度全攻略(上)
2006/10/09 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
详解vue 组件注册
2020/11/20 Vue.js
python的类变量和成员变量用法实例教程
2014/08/25 Python
Python探索之pLSA实现代码
2017/10/25 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
Python Grid使用和布局详解
2018/06/30 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
ORACLE第二个十问
2013/12/14 面试题
初中班主任经验交流材料
2014/05/16 职场文书
啦啦队口号大全
2014/06/16 职场文书
设计专业自荐信
2014/06/19 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android