答题注册安全防护
详情介绍
答题注册插件 (QaqReg)
作者: kuakeba.cn
版本: 1.0.00
答题页: /qaqreg/gate
插件简介
答题注册插件在用户注册前设置一道「答题关卡」。用户必须先完成全部题目并通过后台设定的得分率,才能进入注册页面;管理员可通过「土豪通道」让不愿答题的用户付费跳过。
核心特性
- 强制答题门 — 未通过答题时,访问注册页会被自动跳转到答题页,直接提交注册请求也会被拦截
- 得分率后台控制 — 及格线按百分比设置(如 60 表示答对 60% 即通过)
- 默认 10 道题 — 安装即用,无需先建题库
- 题目管理 — 后台可新增 / 编辑 / 启用停用 / 排序 / 删除
- TXT 批量导入 — 按固定格式写好 txt 文件即可一次性导入多道题
- 土豪通道 — 支付后台设定金额即可跳过答题直接注册
- 防作弊 — 题目接口不下发答案;每轮答题只判分一次,答案快照存在服务端
- 通行证机制 — 通过后签发一次性通行证,注册成功后立即作废,超时需重新答题
安装与启用
- 后台 → 插件管理 → 找到「答题注册」→ 点击安装
- 安装时自动创建数据表、写入 10 道默认题目、注册后台菜单
- 安装后默认已启用,如需关闭可在「答题设置」中关闭开关
- 后台菜单出现在左侧答题注册一级菜单下:答题设置 / 题目管理 / 通过记录
本插件依赖社区(community)插件的注册流程;若站点未启用社区注册,答题门不会生效。
前台使用流程
访客点击「注册」
↓
跳转答题页 /qaqreg/gate
↓
答完所有题目 → 提交判分
↓
得分率达标? ── 否 ──→ 提示得分率,自动换一套题重新作答
↓ 是
签发通行证(默认 30 分钟有效)
↓
跳转 注册页?qaq_token=xxx(注册弹窗)
↓
填写资料提交 → 注册成功(通行证立即作废)土豪通道分支:在答题页点击「土豪通道 · 支付 X 元免答题」→ 创建订单 → 完成支付 → 自动签发通行证并跳转注册。支付订单每笔只能签发一次通行证。
后台设置说明
路径:后台 → 答题注册 → 答题设置
| 配置项 | 默认值 | 说明 |
|---|---|---|
| 启用答题注册 | 开 | 关闭后恢复系统原生注册流程,不拦截任何请求 |
| 及格得分率(%) | 60 | 答对比例达到该值才算通过,取值 1-100 |
| 每次出题数量 | 0 | 0 表示使用全部启用题目;大于 0 时从题库随机抽取指定数量 |
| 通行证有效期(分钟) | 30 | 答题通过后需在该时间内完成注册,超时需重新答题 |
| 启用土豪通道 | 开 | 关闭后答题页不显示付费跳过入口 |
| 土豪通道金额(元) | 9.90 | 支付该金额后免答题直接进入注册,需大于 0 |
修改设置后建议清理一次站点缓存。
题目管理
路径:后台 → 答题注册 → 题目管理
- 新增题目:填写题干、A~D 四个选项、正确答案、排序、状态
- 排序:数字越小越靠前;「每次出题数量」为 0 时按此顺序出题
- 状态:停用的题目不会出现在答题页
- 搜索:支持按题干关键词与状态筛选
TXT 批量导入格式
每道题之间用空行分隔,每道题依次为:题干、A~D 选项、答案。
中国的首都是哪里?
A. 上海
B. 北京
C. 广州
D. 深圳
答案:B
一年有多少个月?
A. 10个月
B. 11个月
C. 12个月
D. 13个月
答案:C格式说明:
- 选项支持
A. xxx、A、xxx、A:xxx三种写法 - 答案支持
答案:A/答案:A(全角半角冒号均可) - 文件编码支持 UTF-8 与 GBK(自动识别)
- 也可以在弹窗中直接粘贴文本导入,无需上传文件
- 解析失败的行会被跳过,导入完成后会提示成功数量
数据表
| 表名 | 用途 |
|---|---|
qaqreg_question | 题库(题干、四个选项、正确答案、状态、排序) |
qaqreg_pass | 通行证记录(token、类型 quiz/skip、IP、订单号、得分率、是否已用、过期时间) |
「通过记录」页可查看全部通行证签发情况,包括类型、得分率、订单号、使用状态,并支持删除记录。
土豪通道说明
- 需先安装并启用支付插件,否则答题页会提示「支付插件不可用」
- 金额与开关在「答题设置」中配置
- 支付渠道沿用支付插件当前配置;支付插件处于沙箱模式时,答题页会显示「模拟支付」按钮,便于测试
- 支付成功后凭证与订单绑定,刷新答题页会自动恢复未完成的订单轮询
- 每个订单只能签发一次通行证;通行证已使用或已过期时需重新下单
常见问题
Q:启用后访问注册页一直跳转到答题页?
A:这是正常拦截。完成答题(或走土豪通道)后会携带 qaq_token 参数回到注册页。
Q:答题通过后注册时提示「请先完成答题验证」?
A:通行证可能已超时(默认 30 分钟)或已被使用。请重新答题;如一题都提交不成功,请检查题库是否有启用状态的题目。
Q:修改了题库但答题页还是旧题?
A:答题页每次进入都会重新拉取题目,刷新页面即可;若仍不生效,清理站点缓存。
Q:能否只拦截注册页,不影响第三方登录自动注册?
A:本插件只拦截标准注册流程(GET 注册页 + POST 注册提交);第三方 OAuth / 短信快捷注册不在此拦截范围内。
Q:卸载插件会删除数据吗?
A:卸载会移除后台菜单与权限节点,业务数据表默认保留(题库与通行证记录不会被删除)。
文件结构
plugins/QaqReg/
├── plugin.json 插件元信息
├── icon.svg 插件图标
├── install.sql 数据表结构
├── routes.php 前台 / 后台路由
├── QaqregPlugin.php 主类(配置、安装、菜单、前台钩子)
├── middleware/Gate.php 注册门岗中间件
├── controller/
│ ├── Gate.php 答题页与 API
│ └── admin/ 设置 / 题目 / 通过记录
└── view/
├── front/gate.html 答题页模板
└── admin/ 后台视图更新记录 (1)
-
v1.0.00
2026-10-31
正式发布
微信客服
QQ官方交流群