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在线代理转向代码
May 05 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
基于PHP对XML的操作详解
Jun 07 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP生成加减算法方式的验证码实例
Mar 12 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 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判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
零基础学Python(一)Python环境安装
2014/08/20 Python
详解Python中dict与set的使用
2015/08/10 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
python实现对输入的密文加密
2019/03/20 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
Python 防止死锁的方法
2020/07/29 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
python爬取抖音视频的实例分析
2021/01/19 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
自主招生自荐信
2013/12/08 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
综合内勤岗位职责
2014/04/14 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
mybatis 获取更新记录的id
2022/05/20 Java/Android