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下几个常用的去空、分组、调试数组函数
Feb 22 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP中的闭包(匿名函数)浅析
Feb 07 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
使用PHP如何实现高效安全的ftp服务器(一)
Dec 20 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
Dec 24 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
php ajax异步读取rss文档数据
Mar 29 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
PHP如何防止用户重复提交表单
Dec 09 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 开发环境配置(Zend Studio)
2010/04/28 PHP
解析php多线程下载远程多个文件
2013/06/25 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
用jquery写的一个万年历(自写)
2014/01/20 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
vue interceptor 使用教程实例详解
2018/09/13 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
美国知名生活购物网站:Goop
2017/11/03 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
如何理解委托
2012/01/06 面试题
在校生自我鉴定
2014/01/23 职场文书
实验心得体会
2014/09/05 职场文书
解除施工合同协议书
2014/10/17 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
python实现简单聊天功能
2021/07/07 Python