zoukankan      html  css  js  c++  java
  • PHP限制IP

    PHP限制IP

    <?php
    /*********************************************
    * 文件:limitip.php
    * 用途:IP限制程序
    * 版本:v1.0
    * 日期:2005-1-7 12:34
    * 作者:heiyeluren (heiyeluren@163.com)
    * 版权:http://www.unixsky.net
    *********************************************/

    error_reporting(7);
    session_start();

    // 发送字符头信息
    if ($headercharset)
    header("Content-Type:text/html; charset=gb2312");

    // 加载公共文件
    require_once("config.php");
    require_once("global.php");
    require_once("db_mysql.php");

    /***************** 进行客户端能否访问本网站校验 ************/

    // 获取客户端IP
    if(getenv('HTTP_CLIENT_IP')) {
    $client_ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
    $client_ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR')) {
    $client_ip = getenv('REMOTE_ADDR');
    } else {
    $client_ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
    }

    // 分解客户端IP
    $cip = explode(".", $client_ip);

    // 连接数据库
    $db = new DB_Sql();
    $err = $db->connect();

    /*  限制远程IP访问, PS: 这段代码真晕,呵呵,用了8个if, -_-#  */
    // 从数据库中提取存储的要限制的IP地址
    $query_str = "SELECT limit_ip FROM us_limitip";
    $db->query($query_str);
    // 把结果循环提取,一个个进行校验
    while ($db->next_record())
    {
    $limit_ip = $db->f("limit_ip");
    $lip = explode(".", $limit_ip);
    // 如果限制IP的第一个是*或者是0的话就跳到错误页
    if (($lip[0]=='*') || ($lip[0]=='0'))
      header("Location:../error.php?errid=300");
    // 如果刚好客户端IP等于我们限制IP就跳到错误页
    if ($client_ip==$limit_ip)
      header("Location:../error.php?errid=300");
    // 如果第一组IP一致进行第二组IP的匹配
    if ($cip[0] == $lip[0])
    {
      // 如果第二组限制IP是*就跳到错误页
      if ($lip[1]=='*')
       header("Location:../error.php?errid=300");
      // 第二组IP匹配就进行第三组IP匹配
      if ($cip[1]==$lip[1])
      {
       // 如果第三组限制字符是*就跳到错误页
       if ($lip[2]=='*')
        header("Location:../error.php?errid=300");
       // 如果第三组IP匹配就跳到第三组校验
       if ($cip[2]==$lip[2])
       {
        // 如果第四组限制IP是*或0就跳到错误页
        if (($lip[3]=='*') || ($lip[3]=='0'))
         header("Location:../error.php?errid=300");
       }
      }
    }  
    }
    // 释放数据库查询结果
    $db->free();

    /****************** IP校验结束 ******************/

    ?>

  • 相关阅读:
    WSS3.0安装或使用的系统服务
    sql面试题
    C#實現SQL Server中存取圖片、文件
    group by
    游标
    ASP.NET MVC WEB API OAuth2Authorize
    [转载]Asp.net MVC中Controller返回值类型
    ASP.NET MVC 3:缓存功能的设计问题
    asp.net mvc api BasicHttpAuthorizeAttribute
    ASP.NET MVC 3和Razor中的@helper 语法
  • 原文地址:https://www.cnblogs.com/fengju/p/6173904.html
Copyright © 2011-2022 走看看