1、编写一个 PHP 页面,使用 Form 表单上传一个留言,包括作者 ID,时间, 主题,正文,图片。一个留言目前允许上传一个图片,一个留言生成一个文件。 提示,文件的格式可以使用 JSON,便于解析。 2、编写一个页面,对所有的留言进行表格形式的浏览(不显示正文和图片,如 实验二的方式),可以考虑分页的方式(可选,因为要用到 session)。 3、编写一个 php 页面用于显示留言的详细内容,当点击列表中的某个列表时, 用该页面显示详细内容。 4、对展示的表格通过 CSS 或者 HTML 技术进行一定的美化。 5、注意三个页面的导航关系,可以设计一个顶层的导航菜单,或者是其他方式
时间: 2023-12-03 07:46:46 浏览: 122
login-form:一个简单的登录表单
1、上传留言页面代码:
```php
<!DOCTYPE html>
<html>
<head>
<title>上传留言</title>
<meta charset="utf-8">
</head>
<body>
<h2>上传留言</h2>
<form action="submit.php" method="post" enctype="multipart/form-data">
<label for="author">作者ID:</label>
<input type="text" name="author" id="author" required><br><br>
<label for="time">时间:</label>
<input type="datetime-local" name="time" id="time" required><br><br>
<label for="subject">主题:</label>
<input type="text" name="subject" id="subject" required><br><br>
<label for="content">正文:</label>
<textarea name="content" id="content" cols="30" rows="10" required></textarea><br><br>
<label for="image">图片:</label>
<input type="file" name="image" id="image"><br><br>
<input type="submit" value="提交留言">
</form>
</body>
</html>
```
2、上传留言处理页面代码(submit.php):
```php
<?php
// 获取表单数据
$author = $_POST['author'];
$time = $_POST['time'];
$subject = $_POST['subject'];
$content = $_POST['content'];
// 处理图片上传
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
$uploadOk = 1;
// 检查图片是否真实存在
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["image"]["tmp_name"]);
if($check !== false) {
$uploadOk = 1;
} else {
echo "上传的文件不是图片。";
$uploadOk = 0;
}
}
// 检查文件是否已经存在
if (file_exists($target_file)) {
echo "抱歉,文件已经存在。";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["image"]["size"] > 500000) {
echo "抱歉,您上传的文件太大。";
$uploadOk = 0;
}
// 允许的文件格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "只允许上传 JPG, JPEG, PNG & GIF 格式的图片。";
$uploadOk = 0;
}
// 图片上传成功
if ($uploadOk == 0) {
echo "抱歉,您的文件未能上传。";
} else {
if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
echo "文件". basename( $_FILES["image"]["name"]). "上传成功。";
} else {
echo "抱歉,文件上传出现了问题。";
}
}
// 将数据写入 JSON 文件
$data = array(
'author' => $author,
'time' => $time,
'subject' => $subject,
'content' => $content,
'image' => $target_file
);
$file = 'messages/' . time() . '.json';
file_put_contents($file, json_encode($data));
echo '<br><br><a href="index.php">返回留言列表</a>';
?>
```
3、留言列表页面代码(index.php):
```php
<!DOCTYPE html>
<html>
<head>
<title>留言列表</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2>留言列表</h2>
<table>
<tr>
<th>ID</th>
<th>作者</th>
<th>时间</th>
<th>主题</th>
<th>操作</th>
</tr>
<?php
$files = glob('messages/*.json');
foreach ($files as $file) {
$data = json_decode(file_get_contents($file), true);
echo '<tr>';
echo '<td>' . basename($file, '.json') . '</td>';
echo '<td>' . $data['author'] . '</td>';
echo '<td>' . $data['time'] . '</td>';
echo '<td>' . $data['subject'] . '</td>';
echo '<td><a href="view.php?id=' . basename($file, '.json') . '">查看</a></td>';
echo '</tr>';
}
?>
</table>
<?php
if (count($files) == 0) {
echo '暂无留言。';
}
?>
<br><br>
<a href="upload.php">上传留言</a>
</body>
</html>
```
4、留言详情页面代码(view.php):
```php
<!DOCTYPE html>
<html>
<head>
<title>留言详情</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2>留言详情</h2>
<?php
$id = $_GET['id'];
$file = 'messages/' . $id . '.json';
if (file_exists($file)) {
$data = json_decode(file_get_contents($file), true);
echo '<h3>' . $data['subject'] . '</h3>';
echo '<p>作者:' . $data['author'] . '</p>';
echo '<p>时间:' . $data['time'] . '</p>';
echo '<p>正文:' . $data['content'] . '</p>';
echo '<p>图片:<br><img src="' . $data['image'] . '"></p>';
} else {
echo '留言不存在。';
}
?>
<br><br>
<a href="index.php">返回留言列表</a>
</body>
</html>
```
5、CSS样式代码(style.css):
```css
table {
border-collapse: collapse;
width: 80%;
margin: 20px auto;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
a {
text-decoration: none;
color: #069;
}
a:hover {
color: #036;
}
```
阅读全文