1.编写一个 PHP 页面,使用 Form 表单上传一个留言,包括作者 ID,时 间,主题,正文,图片。一个留言目前允许上传一个图片,一个留言生成一 个文件。提示,文件的格式可以使用 JSON,便于解析。 2) 编写一个页面,对所有的留言进行表格形式的浏览(不显示正文和图片, 如实验二的方式),可以考虑分页的方式(可选,因为要用到 session)。 3) 编写一个 php 页面用于显示留言的详细内容,当点击列表中的某个列 表时,用该页面显示详细内容。4.界面所有文字都使用中文
时间: 2023-11-18 15:02:57 浏览: 96
PHP AjaxForm提交图片上传并显示图片
以下是一个简单的实现步骤:
1.编写留言上传页面
```php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传留言</title>
</head>
<body>
<h1>上传留言</h1>
<form action="save_message.php" method="post" enctype="multipart/form-data">
<p>作者ID:<input type="text" name="author_id"></p>
<p>主题:<input type="text" name="title"></p>
<p>正文:<textarea name="content" rows="10" cols="50"></textarea></p>
<p>图片:<input type="file" name="image"></p>
<p><input type="submit" value="上传留言"></p>
</form>
</body>
</html>
```
2.编写留言保存页面
```php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// 获取表单数据
$author_id = $_POST['author_id'];
$title = $_POST['title'];
$content = $_POST['content'];
$image = $_FILES['image'];
// 生成文件名
$filename = time() . '.json';
// 构造留言信息数组
$message = array(
'author_id' => $author_id,
'time' => time(),
'title' => $title,
'content' => $content,
'image' => $filename // 图片文件名
);
// 将留言信息写入文件
file_put_contents($filename, json_encode($message));
// 保存图片文件
move_uploaded_file($image['tmp_name'], $filename);
// 跳转到留言列表页面
header('Location: message_list.php');
exit();
}
```
3.编写留言列表页面
```php
<?php
session_start();
// 分页设置
$page_size = 10; // 每页显示的留言数量
$page_num = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页码
// 读取留言文件列表
$file_list = glob('*.json');
// 计算总页数
$total_page = ceil(count($file_list) / $page_size);
// 获取当前页的留言文件
$start_index = ($page_num - 1) * $page_size;
$end_index = $start_index + $page_size - 1;
$current_files = array_slice($file_list, $start_index, $page_size);
// 构造留言列表数组
$message_list = array();
foreach ($current_files as $filename) {
$message = json_decode(file_get_contents($filename), true);
$message['id'] = basename($filename, '.json'); // 文件名作为留言ID
$message_list[] = $message;
}
// 保存当前页码到 session,方便查看留言详情时返回
$_SESSION['current_page'] = $page_num;
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>留言列表</title>
</head>
<body>
<h1>留言列表</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>作者</th>
<th>时间</th>
<th>主题</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php foreach ($message_list as $message): ?>
<tr>
<td><?php echo $message['id']; ?></td>
<td><?php echo $message['author_id']; ?></td>
<td><?php echo date('Y-m-d H:i:s', $message['time']); ?></td>
<td><?php echo $message['title']; ?></td>
<td>
<a href="view_message.php?id=<?php echo $message['id']; ?>">查看</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<p>
<?php if ($page_num > 1): ?>
<a href="?page=<?php echo $page_num - 1; ?>">上一页</a>
<?php endif; ?>
<?php if ($page_num < $total_page): ?>
<a href="?page=<?php echo $page_num + 1; ?>">下一页</a>
<?php endif; ?>
</p>
</body>
</html>
```
4.编写留言详情页面
```php
<?php
session_start();
// 读取留言文件
$id = $_GET['id'];
$filename = $id . '.json';
$message = json_decode(file_get_contents($filename), true);
// 保存当前页码到 session,方便返回留言列表时定位到当前页
$message['page'] = $_SESSION['current_page'];
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>留言详情</title>
</head>
<body>
<h1>留言详情</h1>
<table>
<tr>
<td>作者:</td>
<td><?php echo $message['author_id']; ?></td>
</tr>
<tr>
<td>时间:</td>
<td><?php echo date('Y-m-d H:i:s', $message['time']); ?></td>
</tr>
<tr>
<td>主题:</td>
<td><?php echo $message['title']; ?></td>
</tr>
<tr>
<td>正文:</td>
<td><?php echo $message['content']; ?></td>
</tr>
<tr>
<td>图片:</td>
<td><img src="<?php echo $message['image']; ?>"></td>
</tr>
</table>
<p><a href="message_list.php?page=<?php echo $message['page']; ?>">返回留言列表</a></p>
</body>
</html>
```
以上是一个简单的留言板实现,可以根据需求进行扩展和优化。需要注意的是,本实现没有对上传的文件进行类型和大小限制,需要根据实际情况进行设置。
阅读全文