当前位置:首页 > PHP

php实现打卡源码

2026-02-16 20:20:17PHP

php实现打卡源码

PHP 打卡系统实现

以下是一个简单的 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 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php实现异步图片上传

php实现异步图片上传

异步图片上传的实现方法 在PHP中实现异步图片上传通常需要结合前端JavaScript和后端PHP代码。以下是几种常见的方法: 使用XMLHttpRequest或Fetch API 前端使用Java…

php实现视频直播

php实现视频直播

PHP 实现视频直播的基本方法 PHP 本身并不直接处理视频流,但可以作为后端支持视频直播系统的搭建。以下是几种常见的实现方式: 使用第三方流媒体服务 利用现成的流媒体平台(如 Wowza、Red5…

vue axios实现登录源码

vue axios实现登录源码

以下是一个基于Vue.js和Axios实现登录功能的完整示例代码,包含前端和后端交互逻辑: 前端部分(Vue组件) 安装Axios依赖: npm install axios 登录组件(Lo…

react源码实现视频

react源码实现视频

以下是关于React源码实现的视频资源推荐,涵盖核心概念、虚拟DOM、Fiber架构等关键内容的讲解: React源码解析视频资源 React Fiber架构深度解析 B站UP主「技术蛋」的系列视频…