
项目背景
日常工作需要多次打卡,忙起来常常忘记是否已经打过,等忙完再回想时,心里总悬着一块石头——刚才到底打卡了没有?一旦记错漏打卡,就得面临处罚。这种反复确认的焦虑,催生了这个小巧实用的打卡记录系统。它就是为了解决“我到底打卡了吗”这个看似简单却频繁折磨人的问题而生的。
项目概述
本系统是一套基于 PHP + MySQL 开发的多用户打卡记录解决方案,采用轻量化架构,不依赖任何框架,修改维护都非常简单。页面采用 H5 响应式设计,部署完成后可直接通过手机浏览器访问使用,也可以借助封装工具快速打包为 APK。作者本人已将其打包为微信小程序,日常使用极为顺手。
核心功能一览
| 功能模块 | 功能说明 |
|---|---|
| 用户认证 | 支持注册、登录、密码修改、密码重置,满足日常账号管理需求 |
| 打卡功能 | 每日一键打卡,精确记录每一次打卡时间,杜绝记忆模糊 |
| 记录查询 | 支持按日期筛选查看历史打卡记录,漏没漏一目了然 |
| 用户管理 | 支持头像上传、个人信息查看与编辑 |
| 数据统计 | 提供打卡统计概览,方便个人或管理者掌握整体出勤情况 |
技术特点
轻量简洁:纯 PHP 原生开发,无需引入任何框架,代码结构清晰,二次开发门槛极低;
移动优先:界面针对手机触摸操作做了专门适配,按钮大、布局合理,在浏览器中打开即用;
安全性保障:使用 prepare + bind_param 预处理方式严防 SQL 注入,用户密码采用哈希加密存储,会话管理基于 Session 机制;
前后端分离:API 接口与前端页面解耦,便于后续功能扩展或对接其他客户端。
项目目录结构
├── api/ # RESTful API 接口层 │ ├── checkin.php # 执行打卡 │ ├── login.php # 用户登录 │ ├── register.php # 用户注册 │ ├── records.php # 查询打卡记录 │ └── stats.php # 获取统计数据 ├── config/ # 配置目录 │ ├── database.php # 数据库连接配置 │ └── auth.php # 认证相关配置 ├── sql/ # 数据库脚本 │ └── init.sql # 数据表初始化 ├── avatars/ # 用户头像存储目录 ├── index.php # 首页(打卡主界面) ├── records.php # 打卡记录查询页 ├── profile.php # 个人中心 └── install.php # 一键安装页面
数据库设计
系统共涉及两张核心数据表:
users 表:存储用户账号信息,包括用户名、密码(哈希)、邮箱、手机号、头像路径;
checkin_records 表:存储每一次打卡记录,关联用户 ID、打卡时间戳、以及可选的打卡照片路径。
快速上手
部署项目到 PHP 环境,访问
install.php按提示完成数据库初始化;注册一个账号并登录;
在首页点击“立即打卡”按钮,一秒完成打卡动作;
通过底部导航栏随时切换查看打卡记录和个人信息,所有数据一目了然。
这个小工具解决的不只是打卡问题,更是在帮你把那种“悬着的心”放下来。

