当前位置:首页 > PHP

php如何实现请假

2026-02-16 13:51:31PHP

请假系统的基本功能

实现一个请假系统通常需要包含用户登录、请假申请、审批流程、记录查询等功能。PHP作为后端语言,结合MySQL数据库可以高效完成这一需求。

数据库设计

创建必要的数据库表是基础。用户表存储员工信息,请假表记录申请详情:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL,
    role ENUM('employee', 'manager') NOT NULL
);

CREATE TABLE leave_requests (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    start_date DATE NOT NULL,
    end_date DATE NOT NULL,
    reason TEXT NOT NULL,
    status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
    FOREIGN KEY (user_id) REFERENCES users(id)
);

用户认证实现

使用PHP处理用户登录验证:

session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
    $stmt->execute([$username]);
    $user = $stmt->fetch();

    if ($user && password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        $_SESSION['role'] = $user['role'];
        header("Location: dashboard.php");
    }
}

请假申请提交

创建表单处理请假申请提交:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $userId = $_SESSION['user_id'];
    $startDate = $_POST['start_date'];
    $endDate = $_POST['end_date'];
    $reason = $_POST['reason'];

    $stmt = $pdo->prepare("INSERT INTO leave_requests (user_id, start_date, end_date, reason) VALUES (?, ?, ?, ?)");
    $stmt->execute([$userId, $startDate, $endDate, $reason]);

    header("Location: leave_status.php");
}

审批流程处理

管理人员处理待审批请求:

if ($_SESSION['role'] === 'manager' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    $requestId = $_POST['request_id'];
    $status = $_POST['status'];

    $stmt = $pdo->prepare("UPDATE leave_requests SET status = ? WHERE id = ?");
    $stmt->execute([$status, $requestId]);
}

记录查询展示

员工和管理人员查看请假记录:

$userId = $_SESSION['user_id'];
$role = $_SESSION['role'];

if ($role === 'employee') {
    $stmt = $pdo->prepare("SELECT * FROM leave_requests WHERE user_id = ?");
    $stmt->execute([$userId]);
} else {
    $stmt = $pdo->prepare("SELECT l.*, u.username FROM leave_requests l JOIN users u ON l.user_id = u.id");
    $stmt->execute();
}
$requests = $stmt->fetchAll();

前端界面示例

创建简单的HTML表单供用户提交请假:

<form method="post" action="apply_leave.php">
    <label>开始日期: <input type="date" name="start_date" required></label>
    <label>结束日期: <input type="date" name="end_date" required></label>
    <label>请假原因: <textarea name="reason" required></textarea></label>
    <button type="submit">提交申请</button>
</form>

安全注意事项

实施以下安全措施保障系统安全:

php如何实现请假

  • 使用预处理语句防止SQL注入
  • 对用户密码进行哈希处理
  • 实施CSRF保护
  • 对敏感操作进行权限验证

通过以上模块的组合,可以构建一个完整的请假管理系统。根据实际需求,可以扩展邮件通知、多级审批、请假类型分类等功能。

标签: 如何实现php
分享给朋友:

相关文章

vue如何实现计算

vue如何实现计算

Vue 实现计算的方法 Vue 提供了多种方式来实现计算逻辑,包括计算属性、方法、侦听器等。以下是几种常见的实现方式: 计算属性(Computed Properties) 计算属性是基于它们的响应式…

vue如何实现冒泡

vue如何实现冒泡

Vue 实现冒泡排序的步骤 在 Vue 中实现冒泡排序,可以通过数据绑定和计算属性来动态展示排序过程。以下是一个完整的实现示例。 示例代码 <template> <div>…

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

vue如何实现滤镜

vue如何实现滤镜

Vue 实现滤镜的方法 在 Vue 中实现滤镜效果可以通过多种方式,以下是常见的几种方法: 使用 CSS filter 属性 通过 CSS 的 filter 属性可以直接为元素添加滤镜效果。在 Vu…

vue如何实现登录

vue如何实现登录

Vue 实现登录功能的方法 创建登录表单组件 在 Vue 项目中创建一个登录表单组件,通常命名为 Login.vue。表单包含用户名和密码输入框,以及提交按钮。 <template>…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…