小李:嘿,小王,我正在开发一个出版社教材征订与发放管理系统,我想加入一个功能,让用户可以下载他们订购的教材列表。你有什么好的建议吗?
小王:当然有!首先,我们需要确保用户登录后才能下载。我们可以使用Session来保存用户的登录状态。
小李:明白了,那我们怎么实现下载呢?
小王:我们可以创建一个下载页面,用户点击下载按钮后,服务器会根据请求参数查找对应的教材信息,并生成一个包含这些信息的文件,然后返回给用户。下面是一个简单的示例:
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
}
// 获取下载参数
$id = $_GET['id'];
// 查询数据库获取教材信息
$conn = new mysqli("localhost", "username", "password", "database");
$query = "SELECT * FROM textbooks WHERE id=$id";
$result = $conn->query($query);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$filename = "教材-" . $row["name"] . ".txt";
// 创建文件并写入数据
$file = fopen($filename, "w");
fwrite($file, "名称: " . $row["name"] . "\n");
fwrite($file, "作者: " . $row["author"] . "\n");
fwrite($file, "出版社: " . $row["publisher"] . "\n");
fclose($file);
// 设置响应头
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\"");
header("Content-Length: " . filesize($filename));
// 输出文件内容
readfile($filename);
unlink($filename); // 删除临时文件
exit;
} else {
echo "未找到教材信息";
}
$conn->close();
?>
]]>
小李:这看起来不错!这样用户就可以直接下载他们的教材列表了。
小王:没错,而且这个方法简单高效,非常适合小型到中型的应用场景。