php实现在线考试
PHP实现在线考试系统
数据库设计 创建数据库表存储考试题目、用户信息和考试成绩。常用表包括:
users:用户ID、用户名、密码、角色questions:题目ID、题目内容、选项、正确答案、分值exams:考试ID、考试名称、开始时间、结束时间user_answers:记录ID、用户ID、题目ID、用户答案、得分
用户认证 使用PHP的session或token机制实现用户登录验证。示例代码:
session_start();
if ($_POST['username'] === 'admin' && $_POST['password'] === '123456') {
$_SESSION['loggedin'] = true;
header("Location: exam.php");
}
题目展示 从数据库随机或按规则抽取题目显示给用户:

$sql = "SELECT * FROM questions WHERE exam_id = 1 ORDER BY RAND() LIMIT 20";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo "<div class='question'>".$row['content']."</div>";
}
答题计时 使用JavaScript实现前端倒计时功能:
let timeLeft = 1800; // 30分钟
setInterval(() => {
timeLeft--;
document.getElementById('timer').innerHTML =
`${Math.floor(timeLeft/60)}分${timeLeft%60}秒`;
}, 1000);
自动评分 提交时对比用户答案与正确答案计算分数:

$score = 0;
foreach($_POST['answers'] as $qid => $answer) {
$correct = $db->query("SELECT correct_answer FROM questions WHERE id=$qid")->fetch_column();
if($answer === $correct) $score += 10;
}
$db->query("INSERT INTO exam_results (user_id, score) VALUES ($user_id, $score)");
防止作弊
- 限制页面复制粘贴
- 全屏考试模式
- 题目随机排序
- 记录异常操作
结果分析 使用图表库展示考试成绩分布:
$scores = $db->query("SELECT score FROM exam_results")->fetch_all();
// 使用Chart.js等库生成分数分布直方图
扩展功能
- 添加简答题人工批改功能
- 实现错题本功能
- 考试结果邮件通知
- 多终端适配响应式设计
完整实现需结合HTML/CSS前端界面,建议使用框架如Laravel简化开发流程。注意数据安全和防作弊措施,重要考试应增加人脸识别等验证机制。






