zoukankan      html  css  js  c++  java
  • 接口验证每个ip每小时只能访问2次(自己实验:有待改进)

    <?php
        // echo md5("user");die;
        /*
        查询
            接口地址:http://apis.juhe.cn/mobile/get
            支持格式:json/xml
            请求方式:get
            请求示例:http://localhost/day9.8/port.php?key=c7d81b6949462e2f1bb5fdf18dd1d006&id=用户id&dtype=xx
        请求参数说明:
             id      int     是     用户id
              key     string     是     应用APPKEY(应用详细页查询)
              dtype     string     否     返回数据的格式,xml或json,默认json
          返回参数说明:
               error_code     int     返回码
              reason     string     返回说明
              result     string     返回结果集
        */
          // 模拟
          // $key=c7d81b6949462e2f1bb5fdf18dd1d006;
          // $id=1;
          // 接收用户信息
          $key=$_GET['key'];
          $id=$_GET['id'];
          // 如果用户写dtype接收值,没有默认json
          $dtype=isset($_GET['dtype'])?$_GET['dtype']:'json';
          // 服务器生成key值和用户key值对比
          $app_key=md5("news$id");
          // if ($app_key!=$key) {
              // echo "非法请求";die;
          // }
        /**
         * 验证每小时只能使用2次
         */
        if (!isset($_COOKIE['name'])) {
          setcookie('name','');
        }
        // var_dump($_COOKIE);die;
        if (!isset($_COOKIE['name']['ip'])) {
          setcookie('name[ip]',$_SERVER['REMOTE_ADDR']);
        }
        if (!isset($_COOKIE['name']['num'])) {
          setcookie('name[num]',1);
        }
        // var_dump($_COOKIE['name']['num']);die;
         if (@!isset($_COOKIE['name']['h'])) {
          setcookie('name[h]',date("H"));
        }
        // var_dump($_COOKIE['name']);die;
        // 每小时重置一次
        if (@$_COOKIE['name']['h']!=date("H")) {
          setcookie('name[num]',0);
          setcookie('name[h]',date("H"));
        }
        // 超过2次禁止
        if (@$_COOKIE['name']['num']<2) {
          // 生成接口
          $pdo=new PDO("mysql:host=localhost;dbname=news","root","root");
          $pdo->exec("set names utf8");
          // 得到数据库的内容
          $sql="select * from hao123";
          $data=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
          if ($dtype=='xml') {
            // 生成xml格式数据
            header("content-type:text/xml;charset=utf8");
            echo "<?xml version='1.0' encoding='utf-8'?>";
            echo "<news>";
            foreach ($data as $key => $value) {
              echo "<new>";
                echo "<title><![CDATA[{$value['link']}]]></title>";
                echo "<link><![CDATA[{$value['title']}]]></link>";
              echo "</new>";
            }
          echo "</news>";
          }else{
            // 生成json格式数据
            header("content-type:text/html;charset=utf8");
            echo json_encode($data,JSON_UNESCAPED_UNICODE);
          }
            @setcookie('name[num]',$_COOKIE['name']['num']+1);
        }else{
            die('同一ip一小时之内只允许访问2次');
        }
          
     ?>
  • 相关阅读:
    WCF 第八章 安全 确定替代身份(中)使用AzMan认证
    WCF 第八章 安全 总结
    WCF 第八章 安全 因特网上的安全服务(下) 其他认证模式
    WCF Membership Provider
    WCF 第八章 安全 确定替代身份(下)模仿用户
    WCF 第八章 安全 因特网上的安全服务(上)
    WCF 第九章 诊断
    HTTPS的七个误解(转载)
    WCF 第八章 安全 日志和审计
    基于比较的排序算法集
  • 原文地址:https://www.cnblogs.com/wepe/p/7424634.html
Copyright © 2011-2022 走看看