PHP实现课程创建
PHP实现课程创建的基本步骤
数据库表设计
创建课程表courses,包含字段如id(主键)、title(课程名称)、description(描述)、created_at(创建时间)等。SQL示例:
CREATE TABLE courses (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
表单页面 创建HTML表单用于提交课程信息:
<form action="create_course.php" method="POST">
<label>课程名称:</label>
<input type="text" name="title" required>
<label>课程描述:</label>
<textarea name="description"></textarea>
<button type="submit">创建课程</button>
</form>
处理提交数据
创建create_course.php处理表单提交:
<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取并过滤表单数据
$title = htmlspecialchars($_POST['title']);
$description = htmlspecialchars($_POST['description']);
// 准备SQL并执行
$stmt = $conn->prepare("INSERT INTO courses (title, description) VALUES (?, ?)");
$stmt->bind_param("ss", $title, $description);
if ($stmt->execute()) {
echo "课程创建成功";
} else {
echo "错误: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>
安全增强措施
输入验证 添加服务器端验证确保数据有效性:
if (empty(trim($_POST['title']))) {
die("课程名称不能为空");
}
防SQL注入
使用预处理语句(如上例中的prepare和bind_param)防止SQL注入攻击。

CSRF防护 在表单中添加CSRF令牌:
session_start();
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
表单中增加隐藏域:
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
扩展功能实现
文件上传 允许上传课程封面图片:

<input type="file" name="cover_image" accept="image/*">
PHP处理代码:
$targetDir = "uploads/";
$fileName = basename($_FILES["cover_image"]["name"]);
$targetPath = $targetDir . $fileName;
if (move_uploaded_file($_FILES["cover_image"]["tmp_name"], $targetPath)) {
// 将文件路径存入数据库
}
数据关联
关联课程与教师(假设有teachers表):
ALTER TABLE courses ADD COLUMN teacher_id INT;
ALTER TABLE courses ADD FOREIGN KEY (teacher_id) REFERENCES teachers(id);
插入数据时:
$teacher_id = $_POST['teacher_id'];
$stmt = $conn->prepare("INSERT INTO courses (title, description, teacher_id) VALUES (?, ?, ?)");






