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';
    }

  • 相关阅读:
    jesperreport+ireport简单理解
    tomcat服务器奇异事件
    Spring+SpringMvc+Mybatis整合注意事项
    Websocket简单例子
    uploadify前台上传文件,java后台处理的例子
    违反完整约束条件 (XXX)
    插入排序
    选择排序
    冒泡算法(思路二)
    2-3树
  • 原文地址:https://www.cnblogs.com/bj-tony/p/5315540.html
Copyright © 2011-2022 走看看