当前位置:首页 > PHP

PHP签到实现

2026-02-14 22:22:07PHP

PHP签到功能实现

使用PHP实现签到功能需要结合数据库记录用户签到状态。以下是一个基本的实现方案:

PHP签到实现

数据库设计

创建用户表和数据表存储签到记录:

PHP签到实现

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL
);

CREATE TABLE check_in (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    check_date DATE NOT NULL,
    UNIQUE KEY (user_id, check_date)
);

签到逻辑处理

<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

// 获取当前用户ID(实际应从session获取)
$userId = 1; 

// 检查今天是否已签到
$today = date('Y-m-d');
$stmt = $db->prepare("SELECT id FROM check_in WHERE user_id = ? AND check_date = ?");
$stmt->execute([$userId, $today]);

if ($stmt->rowCount() > 0) {
    echo "今天已经签到过了";
} else {
    // 执行签到
    $insert = $db->prepare("INSERT INTO check_in (user_id, check_date) VALUES (?, ?)");
    if ($insert->execute([$userId, $today])) {
        echo "签到成功";
    } else {
        echo "签到失败";
    }
}
?>

连续签到功能

增加连续签到天数的计算:

// 检查昨天是否签到
$yesterday = date('Y-m-d', strtotime('-1 day'));
$stmt = $db->prepare("SELECT id FROM check_in WHERE user_id = ? AND check_date = ?");
$stmt->execute([$userId, $yesterday]);

$consecutiveDays = 1;
if ($stmt->rowCount() > 0) {
    // 如果昨天签到过,获取连续天数并+1
    $getDays = $db->prepare("SELECT consecutive_days FROM user_stats WHERE user_id = ?");
    $getDays->execute([$userId]);
    $consecutiveDays = $getDays->fetchColumn() + 1;
}

// 更新连续签到天数
$update = $db->prepare("UPDATE user_stats SET consecutive_days = ? WHERE user_id = ?");
$update->execute([$consecutiveDays, $userId]);

前端展示

简单的HTML签到按钮:

<form method="post" action="checkin.php">
    <button type="submit">每日签到</button>
</form>

安全注意事项

  • 使用预处理语句防止SQL注入
  • 验证用户身份(Session)
  • 限制重复请求(防止刷新重复签到)
  • 考虑时区问题(date函数使用)

这个实现包含了基本的签到功能,可以根据需求扩展积分系统、签到奖励等功能。

标签: PHP
分享给朋友:

相关文章

PHP审核流程实现

PHP审核流程实现

PHP审核流程实现方法 审核流程的实现通常涉及状态管理、权限控制和操作记录。以下是几种常见的实现方式: 状态机模式 定义审核状态常量,使用状态机控制流程流转: const STATUS_PEN…

PHP中实现重定向

PHP中实现重定向

PHP重定向的实现方法 在PHP中,重定向是通过发送HTTP头信息来实现的。以下是几种常见的重定向方法: 使用header()函数 header("Location: https://exampl…

PHP接口防重推荐实现

PHP接口防重推荐实现

防重实现方法 使用唯一请求标识符(UUID或业务ID)作为防重依据,客户端每次请求生成唯一标识,服务端校验该标识是否已处理过。适合短时间内的重复请求拦截。 // 客户端生成唯一标识 $request…

PHP实现numpy

PHP实现numpy

在PHP中实现类似NumPy的功能,可以通过结合PHP的数组操作、扩展库或第三方工具来模拟部分功能。以下是几种常见方法: 使用PHP数组和内置函数 PHP的数组支持多维操作,结合内置数学函数可实现基…

PHP实现elm

PHP实现elm

PHP实现ELM(极限学习机) ELM(Extreme Learning Machine)是一种单隐层前馈神经网络算法,具有训练速度快、泛化性能好的特点。以下是PHP实现ELM的关键步骤和代码示例。…

PHP实现markdown

PHP实现markdown

实现Markdown解析的基本方法 PHP中有多种方式可以实现Markdown解析功能,包括使用现有库、自定义解析器或结合前端工具。以下是几种常见的方法: 使用Parsedown库 Parsedo…