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

🗣 Wd提问: PHP源码答题系统

🤖 Ai回答:
以下是一个简单的PHP答题系统源码示例,包含基本功能:

1、数据库设计(MySQL):
sql
CREATE DATABASE quiz_system;

USE quiz_system;

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE questions (
id INT AUTO_INCREMENT PRIMARY KEY,
question_text TEXT NOT NULL,
option_a VARCHAR(255),
option_b VARCHAR(255),
option_c VARCHAR(255),
option_d VARCHAR(255),
correct_answer CHAR(1) NOT NULL,
question_type ENUM('single_choice', 'multiple_choice') DEFAULT 'single_choice'
);

CREATE TABLE exam_results (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
score INT DEFAULT 0,
total_questions INT DEFAULT 0,
exam_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);

2、用户注册(register.php):
php
<?php
$conn = new mysqli(localhost, root, , quiz_system);

if ($_SERVER[REQUEST_METHOD] == POST) {
$username = $conn-real_escape_string($_POST['username']);
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

$stmt = $conn-prepare(INSERT INTO users (username, password) VALUES (?, ?));
$stmt-bind_param(ss, $username, $password);

if ($stmt-execute()) {
echo 注册成功!;
} else {
echo 注册失败: 、$conn-error;
}
}
?
<form method=post
用户名: <input type=text name=username required<br
密码: <input type=password name=password required<br
<button type=submit注册</button
</form

3、登录系统(login.php):
php
<?php
session_start();
$conn = new mysqli(localhost, root, , quiz_system);

if ($_SERVER[REQUEST_METHOD] == POST) {
$username = $conn-real_escape_string($_POST['username']);
$password = $_POST['password'];

$result = $conn-query(SELECT * FROM users WHERE username='$username');
if ($result-num_rows == 1) {
$user = $result-fetch_assoc();
if (password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
header(Location: exam.php);
} else {
echo 密码错误;
}
} else {
echo 用户不存在;
}
}
?
<form method=post
用户名: <input type=text name=username required<br
密码: <input type=password name=password required<br
<button type=submit登录</button
</form

4、考试页面(exam.php):
php
<?php
session_start();
$conn = new mysqli(localhost, root, , quiz_system);

if (!isset($_SESSION['user_id'])) {
header(Location: login.php);
exit;
}

// 获取5道随机题目
$questions = $conn-query(SELECT * FROM questions ORDER BY RAND() LIMIT 5);
$questionCount = $questions-num_rows;
?
<!DOCTYPE html
<html
<head
<title在线考试</title
</head
<body
<h1在线考试系统</h1
<form method=post action=submit_exam.php
<?php while($row = $questions-fetch_assoc()): ?
<div
<h3<?= htmlspecialchars($row['question_text']) ?</h3
<?php foreach(['A', 'B', 'C', 'D'] as $option): ?
<?php if (!empty($row['option_'.$option])): ?
<label
<input type=<?= $row['question_type'] == 'multiple_choice' ? 'checkbox' : 'radio' ?
name=answers[<?= $row['id'] ?][]
value=<?= $option ?
<?= htmlspecialchars($row['option_'.$option]) ?
</label<br
<?php endif; ?
<?php endforeach; ?
</div
<hr
<?php endwhile; ?
<button type=submit提交试卷</button
</form
</body
</html

5、试卷提交处理(submit_exam.php):
php
<?php
session_start();
$conn = new mysqli(localhost, root, , quiz_system);

if (!isset($_SESSION['user_id'])) {
header(Location: login.php);
exit;
}

$userId = $_SESSION['user_id'];
$score = 0;
$total = 0;

if ($_SERVER[REQUEST_METHOD] == POST) {
$questions = $conn-query(SELECT * FROM questions ORDER BY RAND() LIMIT 5);

while($row = $questions-fetch_assoc()) {
$total++;
$userAnswer = isset($_POST['answers'][$row['id']]) ? $_POST['answers'][$row['id']] : [];

// 处理多选题
if ($row['question_type'] == 'multiple_choice') {
sort($userAnswer);
$correctAnswers = str_split($row['correct_answer']);
sort($correctAnswers);
if ($userAnswer == $correctAnswers) {
$score++;
}
} else {
// 单选题
if (!empty($userAnswer) && $userAnswer[0] == $row['correct_answer']) {
$score++;
}
}
}

// 保存成绩
$stmt = $conn-prepare(INSERT INTO exam_results (user_id, score, total_questions) VALUES (?, ?, ?));
$stmt-bind_param(iii, $userId, $score, $total);
$stmt-execute();

echo 考试完成!你的得分是:$score/$total;
}
?

6、管理后台示例(admin/add_question.php):
php
<?php
$conn = new mysqli(localhost, root, , quiz_system);

if ($_SERVER[REQUEST_METHOD] == POST) {
$question_text = $conn-real_escape_string($_POST['question_text']);
$option_a = $conn-real_escape_string($_POST['option_a']);
$option_b = $conn-real_escape_string($_POST['option_b']);
$option_c = $conn-real_escape_string($_POST['option_c']);
$option_d = $conn-real_escape_string($_POST['option_d']);
$correct_answer = $conn-real_escape_string($_POST['correct_answer']);
$question_type = $conn-real_escape_string($_POST['question_type']);

$stmt = $conn-prepare(INSERT INTO questions (question_text, option_a, option_b, option_c, option_d, correct_answer, question_type) VALUES (?, ?, ?, ?, ?, ?, ?));
$stmt-bind_param(sssssss, $question_text, $option_a, $option_b, $option_c, $option_d, $correct_answer, $question_type);

if ($stmt-execute()) {
echo 题目添加成功!;
} else {
echo 添加失败: 、$conn-error;
}
}
?
<form method=post
<textarea name=question_text required</textarea<br
选项A: <input type=text name=option_a required<br
选项B: <input type=text name=option_b required<br
选项C: <input type=text name=option_c<br
选项D: <input type=text name=option_d<br
正确答案: <input type=text name=correct_answer required placeholder=例如:A或ABCD<br
题型:
<select name=question_type
<option value=single_choice单选</option
<option value=multiple_choice多选</option
</select<br
<button type=submit添加题目</button
</form

7、成绩查看(results.php):
php
<?php
session_start();
$conn = new mysqli(localhost, root, , quiz_system);

if (!isset($_SESSION['user_id'])) {
header(Location: login.php);
exit;
}

$results = $conn-query(SELECT * FROM exam_results WHERE user_id=.$_SESSION['user_id']、ORDER BY exam_date DESC);
?
<table border=1
<tr<th考试时间</th<th总题数</th<th得分</th</tr
<?php while($row = $results-fetch_assoc()): ?
<tr
<td<?= $row['exam_date'] ?</td
<td<?= $row['total_questions'] ?</td
<td<?= $row['score'] ?</td
</tr
<?php endwhile; ?
</table

使用说明:
1、创建数据库并导入上述SQL结构
2、修改数据库连接参数(host/username/password)
3、按需添加更多题目
4、确保服务器支持PHP 7.0+ 和 MySQL

扩展建议:
1、添加防作弊机制

Ai作答

📣 商家广告


看相

起名

香港vps

姓名

Ai评估


0

IP地址: 123.220.223.199

搜索次数: 7

提问时间: 2025-12-21 07:22:08

🛒 域名购买

❓️ 热门提问

🌐 域名评估

最新挖掘

🖌 热门作画

🤝 关于我们

🗨 加入群聊

🔗 友情链接

🧰 站长工具
📢

温馨提示

本站所有 问答 均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉

技术支持

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

上一篇 65335 65336 65337 下一篇