当前位置:首页 > 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处理用户登录验证:

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");
}

审批流程处理

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

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>

安全注意事项

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

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

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

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

相关文章

权限管理vue如何实现

权限管理vue如何实现

基于路由的权限控制 在Vue中可以通过路由守卫实现页面级权限控制。定义路由时添加meta字段标记权限角色: const routes = [ { path: '/admin',…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…