豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: 二维码签到php源码

🤖 Ai回答:
以下是一个简单的 二维码签到系统(基于 PHP) 的源码示例,包含:

生成带用户信息的二维码
扫码后自动签到(记录时间、用户等)
简单的后台管理界面(查看签到记录)

📌 功能说明

1、用户访问签到页面 → 生成专属二维码
2、扫码后跳转到签到接口 → 自动记录签到时间
3、后台可查看所有签到记录

📁 项目结构

qrcode-checkin/

├── index.php 主页:生成二维码
├── checkin.php 签到接口(扫码后访问)
├── admin.php 后台管理页(查看签到记录)
├── config.php 数据库配置
├── qrcode/ 生成的二维码图片保存目录(可选)
└── db.sql MySQL 数据库建表语句

✅ 第一步:数据库设计 (`db.sql`)

sql
CREATE DATABASE IF NOT EXISTS qr_checkin;
USE qr_checkin;

CREATE TABLE checkin_records (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id VARCHAR(50) NOT NULL UNIQUE,
name VARCHAR(100),
checkin_time DATETIME DEFAULT CURRENT_TIMESTAMP,
ip_address VARCHAR(45),
status ENUM('checked', 'failed') DEFAULT 'checked'
);

插入测试数据(可选)
INSERT INTO checkin_records (user_id, name, checkin_time, ip_address)
VALUES ('u123', '张三', NOW(), '127.0.0.1');

运行该 SQL 文件创建数据库和表。

🔧 第二步:配置文件 `config.php`

php
<?php
// config.php
define('DB_HOST', 'localhost');
define('DB_USER', 'your_db_user');
define('DB_PASS', 'your_db_password');
define('DB_NAME', 'qr_checkin');

// 二维码保存路径(需要可写)
define('QR_CODE_DIR', __DIR__ 、'/qrcode/');

// 生成唯一用户ID(用于二维码)
function generateUserId() {
return 'u' 、substr(md5(uniqid()), 0, 8);
}

// 获取客户端真实IP
function getClientIP() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
return $_SERVER['REMOTE_ADDR'];
}
}
?

🖼️ 第三步:首页生成二维码 (`index.php`)

php
<?php
require_once 'config.php';

// 生成用户唯一标识
if (!isset($_SESSION)) session_start();
if (!isset($_SESSION['user_id'])) {
$_SESSION['user_id'] = generateUserId();
}

$user_id = $_SESSION['user_id'];
$name = $_POST['name'] ?? '未命名用户';

// 保存用户信息到数据库(如果还没存)
try {
$pdo = new PDO(mysql:host= 、DB_HOST 、;dbname= 、DB_NAME, DB_USER, DB_PASS);
$stmt = $pdo-prepare(INSERT IGNORE INTO checkin_records (user_id, name) VALUES (?, ?));
$stmt-execute([$user_id, $name]);
} catch (PDOException $e) {
die(数据库错误: 、$e-getMessage());
}

// 生成二维码链接(包含 user_id)
$checkinUrl = http:// 、$_SERVER['HTTP_HOST'] 、/checkin.php?uid= 、urlencode($user_id);

// 引入 QR Code 库(使用 phpqrcode)
// 安装方式:`composer require endroid/qr-code`
// 或手动下载:https://github.com/endroid/qr-code

// 这里用简单方式:调用外部库
require_once 'vendor/autoload.php'; // 假设已安装

use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;

$qrCode = new QrCode($checkinUrl);
$writer = new PngWriter();
$result = $writer-write($qrCode);

// 保存二维码图片
$filename = QR_CODE_DIR 、$user_id 、'.png';
file_put_contents($filename, $result-getData());

// 显示二维码
?

<!DOCTYPE html
<html lang=zh
<head
<meta charset=UTF-8 /
<title二维码签到</title
<style
body { font-family: Arial, sans-serif; text-align: center; padding: 50px; }
.container { max-width: 600px; margin: auto; border: 1px solid ddd; padding: 20px; background: f9f9f9; }
img { width: 200px; height: 200px; margin: 20px auto; display: block; }
input { padding: 8px; margin: 5px; }
button { padding: 10px 20px; font-size: 16px; }
</style
</head
<body
<div class=container
<h2欢迎!请扫码签到</h2
<form method=post
<label请输入姓名:</label
<input type=text name=name value=<?= htmlspecialchars($name) ? required /
<button type=submit更新姓名</button
</form

<img src=/qrcode/<?= $user_id ?.png alt=签到二维码 /

<p<strong签到链接:</strong<br<?= htmlspecialchars($checkinUrl) ?</p
</div
</body
</html

✅ 第四步:签到接口 (`checkin.php`)

php
<?php
require_once 'config.php';

// 获取参数
$uid = $_GET['uid'] ?? '';
if (!$uid) {
http_response_code(400);
echo 无效的用户ID;
exit;
}

// 检查是否已签到
try {
$pdo = new PDO(mysql:host= 、DB_HOST 、;dbname= 、DB_NAME, DB_USER, DB_PASS);
$stmt = $pdo-prepare(SELECT * FROM checkin_records WHERE user_id = ?);
$stmt-execute([$uid]);
$record = $stmt-fetch();

if (!$record) {
echo 用户不存在。;
exit;
}

// 防止重复签到(可加时间限制,如 24 小时内不能重复)
$lastCheckin = strtotime($record['checkin_time']);
$now = time();
if ($now $lastCheckin < 86400) { // 24小时内不允许重复签到
echo 您已在近期签到过,请勿重复操作。;
exit;
}

// 更新签到时间
$ip = getClientIP();
$updateStmt = $pdo-prepare(UPDATE checkin_records SET checkin_time = NOW(), ip_address = ?, status = 'checked' WHERE user_id = ?);
$updateStmt-execute([$ip, $uid]);

echo <h1✅ 签到成功!</h1;
echo <p时间: 、date('Y-m-d H:i:s') 、</p;
echo <pIP地址: 、$ip 、</p;

} catch (PDOException $e) {
echo 签到失败: 、$e-getMessage();
}
?

📊 第五步:后台管理 (`admin.php`)

php
<?php
require_once 'config.php';

try {
$pdo = new PDO(mysql:host= 、DB_HOST 、;dbname= 、DB_NAME, DB_USER, DB_PASS);
$stmt = $pdo-query(SELECT * FROM checkin_records ORDER BY checkin_time DESC);
$records = $stmt-fetchAll();
} catch (PDOException $e) {
die(数据库错误: 、$e-getMessage());
}
?

<!DOCTYPE html
<html lang=zh
<head
<meta charset=UTF-8 /
<title签到记录管理</title
<style
body { font-family: Arial, sans-serif; margin: 20px; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid ccc; padding: 8px; text-align: left; }
th { background-color: f2f2f2; }
.status { color: green; font-weight: bold; }
</style
</head
<body
<h2📋 签到记录列表</h2
<table
<thead
<tr
<th用户ID</th
<th姓名</th
<th签到时间</th
<thIP地址</th
<th状态</th
</tr
</thead
<tbody
<?php foreach ($records as $row): ?
<tr
<td<?= htmlspecialchars($row['user_id']) ?</td
<td<?= htmlspecialchars($row['name']) ?</td
<td<?= htmlspecialchars($row['checkin_time']) ?</td
<td<?= htmlspecialchars($row['ip_address']) ?</td
<td class=status<?= ucfirst($row['status']) ?</td
</tr
<?php endforeach; ?
</tbody
</table
</body
</html

📦 安装依赖(推荐使用 Composer)

bash
安装 QR Code 库
composer require endroid/qr-code

你也可以直接从官网下载 [phpqrcode](https://github.com/endroid/qr-code) 并放入项目中。

🔐 安全建议

1、使用 HTTPS(防止中间人攻击)
2、验证用户身份(可结合登录系统)
3、添加防刷机制(如限制每小时只能签到一次)
4、设置 `qrcode/` 目录为不可访问(`.htaccess` 或 Nginx 配置)
5、不要将数据库密码硬编码在代码中(可用环境变量)

🚀 如何运行?

1、将项目部署到支持 PHP + MySQL 的服务器(如 Apache/Nginx)
2、导入 `db.sql` 到数据库
3、修改 `config.php` 中的数据库账号密码
4、运行 `composer install` 安装 QR 库
5、访问 `http://your-domain.com/index.php`

📌 总结

这个系统实现了:
生成个性化二维码
扫码自动签到
记录签到时间与 IP
后台查看历史记录

适合会议签到、活动打卡、课堂签到等场景。

如果你希望我打包成一个完整的可下载项目(含 `.zip` 结构),可以告诉我,我可以为你生成完整压缩包结构。

需要添加「微信小程序签到」或「钉钉集成」功能吗?也可以扩展 😊

Ai作答

📣 商家广告


贵阳用友软件

vps

广告招商

公司

香港vps


0

IP地址: 79.100.8.253

搜索次数: 1

提问时间: 2025-11-10 16:12:19

🛒 域名购买
lf.gs
45.gold
31.gs
zd.gs
jgqg.cn
qg.biz
67.plus
352.net.cn
jqjp.cn
76.gold

❓️ 热门提问
cdp服务器
加速器 下载
网页游戏服务器多少钱
服务器 免费
mysql数据库服务器
vps路由器
部署git服务器
免费主机php
海南 服务器
windows7搭建ftp服务器
豌豆Ai站群搜索引擎系统

🌐 域名评估
allonedu.cn
zxxd.com
nn.nm.cn
a-s.cn
r.cq.cn
uavtower.org.cn
s.qh.cn
jgdh.cn
191.net.cn
vi.cx

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
站群程序  果果考典  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 84825 84826 84827 下一篇