当前位置:首页 > PHP

php实现打卡源码

2026-02-16 20:20:17PHP

PHP 打卡系统实现

以下是一个简单的 PHP 打卡系统实现方案,包含基本的打卡功能和数据库记录。

数据库设计

创建一个名为 clock_in 的表:

CREATE TABLE `clock_in` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `clock_in_time` datetime NOT NULL,
  `clock_out_time` datetime DEFAULT NULL,
  `status` tinyint(1) DEFAULT 1 COMMENT '1:正常 0:异常',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

连接数据库

$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

打卡功能实现

// 打卡入口
if (isset($_POST['action'])) {
    $userId = $_SESSION['user_id']; // 假设用户已登录
    $currentTime = date('Y-m-d H:i:s');

    if ($_POST['action'] == 'clock_in') {
        // 上班打卡
        $stmt = $db->prepare("INSERT INTO clock_in (user_id, clock_in_time) VALUES (?, ?)");
        $stmt->execute([$userId, $currentTime]);
        echo "上班打卡成功";
    } elseif ($_POST['action'] == 'clock_out') {
        // 下班打卡
        $stmt = $db->prepare("UPDATE clock_in SET clock_out_time = ? WHERE user_id = ? AND DATE(clock_in_time) = CURDATE()");
        $stmt->execute([$currentTime, $userId]);
        echo "下班打卡成功";
    }
}

打卡记录查询

// 查询当前用户打卡记录
$userId = $_SESSION['user_id'];
$stmt = $db->prepare("SELECT * FROM clock_in WHERE user_id = ? ORDER BY clock_in_time DESC");
$stmt->execute([$userId]);
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);

前端界面示例

<form method="post">
    <input type="hidden" name="action" value="clock_in">
    <button type="submit">上班打卡</button>
</form>

<form method="post">
    <input type="hidden" name="action" value="clock_out">
    <button type="submit">下班打卡</button>
</form>

<table>
    <tr>
        <th>日期</th>
        <th>上班时间</th>
        <th>下班时间</th>
        <th>状态</th>
    </tr>
    <?php foreach ($records as $record): ?>
    <tr>
        <td><?= date('Y-m-d', strtotime($record['clock_in_time'])) ?></td>
        <td><?= $record['clock_in_time'] ?></td>
        <td><?= $record['clock_out_time'] ?? '未打卡' ?></td>
        <td><?= $record['status'] ? '正常' : '异常' ?></td>
    </tr>
    <?php endforeach; ?>
</table>

功能扩展建议

  • 添加地理位置验证,防止远程打卡
  • 实现打卡提醒和异常通知
  • 增加月度统计和报表功能
  • 添加管理员审核功能
  • 实现多设备登录限制

这个基础实现可以根据具体需求进行扩展和优化,例如添加更多的验证逻辑、美化界面或增加额外的功能模块。

php实现打卡源码

标签: 源码php
分享给朋友:

相关文章

vue源码实现

vue源码实现

Vue 源码实现的核心模块分析 Vue.js 的源码实现主要围绕响应式系统、虚拟 DOM、模板编译等核心模块展开。以下是关键部分的实现原理和代码结构解析。 响应式系统 Vue 的响应式基于 Obj…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searc…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…