• 首页
  • 微语
  • 相册
  • 足迹
  • 邻居
  • 留言
  • 归档
  • 关于
  • 搜索
  • 夜间模式
    ©2016-2026  幻影博客 Theme by OneBlog

    幻影博客博客

    搜索
    标签
    # e4a # 域名 # 源码 # 教程 # 内容 # 代挂 # app # 网站 # 软件 # QQ
  • 首页>
  • 网站源码>
  • 正文
  • 分享一个根据QQ号进行签到的Api接口源码

    2024年12月29日 423 阅读 0 评论 3629 字

    背景;

    昨天晚上一个朋友问我能不能做 给我发了几个要求 一看非常简单 开搞!

    功能:

    1. 功能概述:构建一个API,实现基于QQ号的签到积分获取功能,并对签到时间进行限制。
    2. 积分规则:每次签到所获积分在0.3至0.8之间随机生成。
    3. 参数要求:仅接受一个参数,即QQ号。
    4. 数据处理:

    • 签到成功后,将签到信息(QQ号、获取积分、签到时间)存入数据库。
    • 向调用方返回当日获取积分与该QQ号的总积分。
      5. 签到限制:
    • 设定开启签到时间与关闭签到时间,不在此时间段内签到,判定为无效签到。
    • 每个QQ号每日仅能有效签到一次,所有签到记录作为日志留存。

    使用方法:

    域名/api.php?qq=QQ账号

    修改代码里面的数据库账号密码 就可以直接使用


    代码:

    数据库SQL:

    签到数据:

    CREATE TABLE sign_in (
        id INT AUTO_INCREMENT PRIMARY KEY,
        qq_number VARCHAR(20) NOT NULL,
        points FLOAT NOT NULL,
        sign_in_time DATETIME NOT NULL,
        UNIQUE (qq_number, sign_in_time)
    );

    签到日志:

    CREATE TABLE sign_in_log (
        id INT AUTO_INCREMENT PRIMARY KEY,
        qq_number VARCHAR(20) NOT NULL,
        sign_in_time DATETIME NOT NULL,
        points FLOAT NOT NULL
    );

    Api接口:

    <?php
    // api.php
    header('Content-Type: application/json');
    
    // 数据库配置
    $dbHost     = 'localhost';
    $dbUsername = '123456';
    $dbPassword = '123456';
    $dbName     = '123456';
    
    // 创建数据库连接
    $conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
    
    // 检查数据库连接
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    
    // 获取QQ号
    $qqNumber = $_GET['qq'] ?? '';
    
    // 检查QQ号是否提供
    if (empty($qqNumber)) {
        echo json_encode(['error' => 'QQ号未提供']);
        exit;
    }
    
    // 获取当前时间和允许的签到时间段
    $currentTime = new DateTime();
    $startTime = new DateTime('today 08:00:00');
    $endTime = new DateTime('today 23:59:59');
    
    // 检查是否在签到时间内
    if ($currentTime < $startTime || $currentTime > $endTime) {
        echo json_encode(['error' => '不在签到时间内']);
        exit;
    }
    
    $stmt = $conn->prepare("SELECT * FROM sign_in WHERE qq_number=? AND DATE(sign_in_time)=CURDATE()");
    $stmt->bind_param("s", $qqNumber);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        // 如果今日已签到,查询总积分
        $totalStmt = $conn->prepare("SELECT SUM(points) as total_points FROM sign_in WHERE qq_number=?");
        $totalStmt->bind_param("s", $qqNumber);
        $totalStmt->execute();
        $totalResult = $totalStmt->get_result();
        $totalPoints = $totalResult->fetch_assoc()['total_points'] ?? 0;
        
        // 返回错误信息及总积分
        echo json_encode(['error' => '今日已签到', 'total_points' => $totalPoints]);
        $totalStmt->close();
        exit;
    }
    
    // 生成随机积分
    $points = rand(3, 8) / 10;
    
    // 插入签到记录
    $insertStmt = $conn->prepare("INSERT INTO sign_in (qq_number, points, sign_in_time) VALUES (?, ?, NOW())");
    $insertStmt->bind_param("sd", $qqNumber, $points);
    if ($insertStmt->execute()) {
        // 记录日志
        $logStmt = $conn->prepare("INSERT INTO sign_in_log (qq_number, sign_in_time, points) VALUES (?, NOW(), ?)");
        $logStmt->bind_param("ds", $qqNumber, $points);
        $logStmt->execute();
        
        // 计算总积分
        $selectStmt = $conn->prepare("SELECT SUM(points) as total_points FROM sign_in WHERE qq_number=?");
        $selectStmt->bind_param("s", $qqNumber);
        $selectStmt->execute();
        $selectResult = $selectStmt->get_result();
        $totalPoints = $selectResult->fetch_assoc()['total_points'] ?? 0;
    
        // 返回结果
        echo json_encode(['points' => $points, 'total_points' => $totalPoints + $points]);
    } else {
        // 如果签到记录插入失败,输出错误信息
        echo json_encode(['error' => '签到失败']);
    }
    
    // 关闭语句和连接
    $stmt->close();
    $insertStmt->close();
    $logStmt->close();
    $selectStmt->close();
    $conn->close();
    ?>
    本文著作权归作者 [ HuanYing ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    首页微语相册足迹邻居留言归档关于
    Copyright©2016-2026  All Rights Reserved.  Load:0.023 s
    鲁ICP备2022028556号-1
    Theme by OneBlog V3.6.5
    夜间模式

    本站已加入BLOGS·CN

    开源不易,请尊重作者版权,保留基本的版权信息。