当前位置:首页 > PHP

php 怎么实现门禁

2026-03-13 02:57:40PHP

实现门禁系统的基本思路

门禁系统的核心功能包括身份验证、权限管理和记录日志。PHP 可以通过数据库、硬件接口(如 RFID 读卡器)和 Web 服务实现这些功能。

数据库设计

创建必要的数据库表存储用户信息、权限和访问记录。
用户表(users)字段:id, name, card_id(卡号), role(角色)。
访问记录表(access_logs)字段:id, user_id, access_time, status(成功/失败)。

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    card_id VARCHAR(20) UNIQUE,
    role VARCHAR(20)
);

CREATE TABLE access_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    access_time DATETIME,
    status VARCHAR(10)
);

硬件接口集成

通过串口或网络 API 与 RFID 读卡器通信。PHP 可使用 fopencurl 读取设备数据。
示例代码读取串口数据(需服务器权限):

$device = "/dev/ttyUSB0";
$handle = fopen($device, "r");
if ($handle) {
    $card_id = trim(fgets($handle));
    fclose($handle);
}

身份验证逻辑

验证卡号是否在数据库中并检查权限:

$pdo = new PDO("mysql:host=localhost;dbname=access_control", "user", "password");
$stmt = $pdo->prepare("SELECT * FROM users WHERE card_id = ?");
$stmt->execute([$card_id]);
$user = $stmt->fetch();

if ($user) {
    $log_stmt = $pdo->prepare("INSERT INTO access_logs (user_id, access_time, status) VALUES (?, NOW(), 'success')");
    $log_stmt->execute([$user['id']]);
    echo "Access granted for " . $user['name'];
} else {
    $log_stmt = $pdo->prepare("INSERT INTO access_logs (user_id, access_time, status) VALUES (NULL, NOW(), 'failed')");
    $log_stmt->execute();
    echo "Access denied";
}

门锁控制

通过 GPIO 或继电器控制物理门锁。PHP 可调用外部脚本(如 Python)或发送 HTTP 请求到硬件控制器:

exec("python control_lock.py unlock");
// 或通过 HTTP API
file_get_contents("http://192.168.1.100/unlock?key=API_KEY");

日志与报警

记录所有访问尝试并设置异常报警(如多次失败尝试):

php 怎么实现门禁

$failed_attempts = $pdo->query("SELECT COUNT(*) FROM access_logs WHERE status = 'failed' AND access_time > NOW() - INTERVAL 5 MINUTE")->fetchColumn();
if ($failed_attempts > 3) {
    mail("admin@example.com", "Security Alert", "Multiple failed access attempts detected");
}

扩展功能

  • 多因素认证:结合密码或生物识别(需额外硬件)。
  • 时间限制:在 SQL 查询中添加 AND CURRENT_TIME() BETWEEN '08:00' AND '18:00' 限制访问时段。
  • Web 管理界面:用 PHP 框架(如 Laravel)构建管理后台,管理用户和权限。

安全注意事项

  • 使用预处理语句防止 SQL 注入。
  • 加密敏感数据(如卡号)。
  • 限制硬件接口的访问权限。

标签: 门禁php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现搜索

php实现搜索

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

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…