当前位置:首页 > 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实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…