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 读取shell管道传输过来的内容
Mar 01 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
解析strtr函数的效率问题
Jun 26 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
php+xml实现在线英文词典查询的方法
Jan 23 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
PHP可变变量学习小结
Nov 29 PHP
php远程下载类分享
Apr 13 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
PHP应用跨时区功能的实现方法
Mar 21 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PDO::getAttribute讲解
2019/01/28 PHP
jquery 插件学习(三)
2012/08/06 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
python中with用法讲解
2020/02/07 Python
python实现简单井字棋游戏
2020/03/04 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
工程采购员岗位职责
2014/03/09 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server