zoukankan      html  css  js  c++  java
  • 禁止 一些地区的ip用户访问 网站

    01 framework.php 中 获取请求的ip地址.保存为常量

    define('IP', request::get_clientip());

    02 setting表中.属于system模块,保存有ipbanned属性.对于的value是具体ip

    cmstop.php 主程序执行前 _before_execute.读库配置,有禁止访问的ip时,遍历出所有ip,和当前请求的ip匹配. 提示禁止访问

    $setting = setting('system');

    if ($setting['ipbanned'])
    {
    $ipbanned = str_replace(array('*', '.'), array('[0-9]{1,3}', '.'), $setting['ipbanned']);
    $ipbanned = array_map('trim', explode(" ", $ipbanned));
    foreach ($ipbanned as $ip)
    {
       if (preg_match("/^$ip$/", IP)) $this->showmessage("Access Denied");
    }
    }

    ==========获取请求用户的ip --获取环境方法.远程地址 getenv('REMOTE_ADDR');

    function get_clientip()
    {
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) //str case cmp 字符串 案例 cmp减法比较  相等返回0 其他小于0或大于0
    {
    $ip = getenv('HTTP_CLIENT_IP');
    }
    elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'))
    {
    $ip = getenv('HTTP_X_FORWARDED_FOR');
    }
    elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown'))
    {
    $ip = getenv('REMOTE_ADDR');
    }
    elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))
    {
    $ip = $_SERVER['REMOTE_ADDR'];
    }
    return preg_match("/[d.]{7,15}/", $ip, $matches) ? $matches[0] : 'unknown';
    }

  • 相关阅读:
    二元函数求一定区间上的最大值问题
    LOF异常检测算法实现
    失效项目总代码汇总
    layui弹出层layer.open 中的content问题
    分治算法基本原理和实践
    Android 文件存储浅析
    详解 CmProcess 跨进程通信的实现
    View Animation 运行原理解析
    margin-top失效及解决办法
    vue自定义移动端touch事件之点击、滑动、长按事件
  • 原文地址:https://www.cnblogs.com/bj-tony/p/5315540.html
Copyright © 2011-2022 走看看