Create manage_albums.php
Browse files- manage_albums.php +154 -0
manage_albums.php
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
session_start(); // 开始会话
|
3 |
+
|
4 |
+
$albumDir = 'albums/';
|
5 |
+
$albums = glob($albumDir . '*.txt');
|
6 |
+
$correctPassword = 'addroot'; // 设置固定的口令
|
7 |
+
|
8 |
+
// 处理备份相册的操作
|
9 |
+
if (isset($_POST['backup']) && isset($_SESSION['password']) && $_SESSION['password'] === $correctPassword) {
|
10 |
+
$zip = new ZipArchive();
|
11 |
+
$backupFileName = $albumDir . 'backup_' . date('YmdHis') . '.zip';
|
12 |
+
if ($zip->open($backupFileName, ZipArchive::CREATE) === TRUE) {
|
13 |
+
foreach ($albums as $album) {
|
14 |
+
$zip->addFile($album, basename($album));
|
15 |
+
}
|
16 |
+
$zip->close();
|
17 |
+
|
18 |
+
// 触发下载
|
19 |
+
header('Content-Type: application/zip');
|
20 |
+
header('Content-Disposition: attachment; filename="' . basename($backupFileName) . '"');
|
21 |
+
header('Content-Length: ' . filesize($backupFileName));
|
22 |
+
ob_clean(); // 清除缓冲区
|
23 |
+
flush(); // 刷新输出缓冲
|
24 |
+
readfile($backupFileName);
|
25 |
+
// 删除服务器上的备份文件
|
26 |
+
unlink($backupFileName);
|
27 |
+
exit;
|
28 |
+
} else {
|
29 |
+
echo "<p>备份失败。</p>";
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
// 检查会话中的口令或表单提交的口令
|
34 |
+
if (isset($_SESSION['password']) && $_SESSION['password'] === $correctPassword) {
|
35 |
+
// 口令正确,显示管理界面
|
36 |
+
|
37 |
+
// 显示备份按钮和返回首页按钮
|
38 |
+
echo "<div style='display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px;'>";
|
39 |
+
echo "<a href='index.php' style='text-decoration: none;'>";
|
40 |
+
echo "<button type='button'>返回首页</button>";
|
41 |
+
echo "</a>";
|
42 |
+
echo "<form method='post'>";
|
43 |
+
echo "<input type='submit' name='backup' value='备份相册'>";
|
44 |
+
echo "</form>";
|
45 |
+
echo "</div>";
|
46 |
+
|
47 |
+
// 处理创建新相册的操作
|
48 |
+
if (isset($_POST['create']) && !empty($_POST['newAlbumName'])) {
|
49 |
+
$newAlbumName = trim($_POST['newAlbumName']);
|
50 |
+
$newAlbumFile = $albumDir . $newAlbumName . '.txt';
|
51 |
+
if (!file_exists($newAlbumFile)) {
|
52 |
+
file_put_contents($newAlbumFile, '');
|
53 |
+
echo "<p>新相册 '{$newAlbumName}' 创建成功。</p>";
|
54 |
+
} else {
|
55 |
+
echo "<p>相册 '{$newAlbumName}' 已存在。</p>";
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
// 如果设置了album参数,显示相册内容管理界面
|
60 |
+
if (isset($_GET['album'])) {
|
61 |
+
$albumName = basename($_GET['album'], '.txt');
|
62 |
+
$albumFile = $albumDir . $albumName . '.txt';
|
63 |
+
|
64 |
+
// 显示相册内容管理界面
|
65 |
+
echo "<h2>管理相册: $albumName</h2>";
|
66 |
+
echo "<a href='?'>返回相册列表</a><br>";
|
67 |
+
|
68 |
+
// 处理增加图片的操作
|
69 |
+
if (isset($_POST['add'])) {
|
70 |
+
$imageUrls = explode("\n", $_POST['imageUrls']); // 从文本区域获取多个URL
|
71 |
+
foreach ($imageUrls as $imageUrl) {
|
72 |
+
if (!empty($imageUrl)) {
|
73 |
+
file_put_contents($albumFile, trim($imageUrl) . "\n", FILE_APPEND);
|
74 |
+
}
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
// 处理删除图片的操作
|
79 |
+
if (isset($_POST['delete'])) {
|
80 |
+
$imageUrl = $_POST['imageUrl'];
|
81 |
+
$images = file($albumFile, FILE_IGNORE_NEW_LINES);
|
82 |
+
$images = array_filter($images, function ($line) use ($imageUrl) {
|
83 |
+
return trim($line) !== trim($imageUrl);
|
84 |
+
});
|
85 |
+
file_put_contents($albumFile, implode("\n", $images) . "\n");
|
86 |
+
}
|
87 |
+
|
88 |
+
// 显示图片和删除按钮
|
89 |
+
$images = file($albumFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
90 |
+
echo "<div style='display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px;'>";
|
91 |
+
foreach ($images as $imageUrl) {
|
92 |
+
echo "<div style='text-align: center;'>";
|
93 |
+
echo "<img src='$imageUrl' alt='Thumbnail' width='100' height='100'>";
|
94 |
+
echo "<form method='post' style='display: inline;' onsubmit='return confirmDelete();'>";
|
95 |
+
echo "<input type='hidden' name='imageUrl' value='$imageUrl'>";
|
96 |
+
echo "<input type='submit' name='delete' value='删除'>";
|
97 |
+
echo "</form>";
|
98 |
+
echo "</div>";
|
99 |
+
}
|
100 |
+
echo "</div>";
|
101 |
+
|
102 |
+
// 显示添加图片表单
|
103 |
+
echo "<form method='post' style='margin-top: 20px;'>";
|
104 |
+
echo "<textarea name='imageUrls' placeholder='输入图片URL,每行一个' style='width: 500px; height: 100px;'></textarea>";
|
105 |
+
echo "<input type='submit' name='add' value='批量添加图片'>";
|
106 |
+
echo "</form>";
|
107 |
+
|
108 |
+
} else {
|
109 |
+
// 显示相册列表
|
110 |
+
echo "<h2>相册列表</h2>";
|
111 |
+
echo "<div style='display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px;'>";
|
112 |
+
foreach ($albums as $album) {
|
113 |
+
$albumName = basename($album, '.txt');
|
114 |
+
echo "<a href='?album=$albumName' style='text-align: center;'>$albumName</a>";
|
115 |
+
}
|
116 |
+
echo "</div>";
|
117 |
+
|
118 |
+
// 显示创建新相册表单
|
119 |
+
echo "<form method='post' style='margin-top: 20px;'>";
|
120 |
+
echo "<input type='text' name='newAlbumName' placeholder='输入新相册名称'>";
|
121 |
+
echo "<input type='submit' name='create' value='创建新相册'>";
|
122 |
+
echo "</form>";
|
123 |
+
}
|
124 |
+
|
125 |
+
} elseif (isset($_POST['password']) && $_POST['password'] === $correctPassword) {
|
126 |
+
// 口令正确,保存口令到会话
|
127 |
+
$_SESSION['password'] = $_POST['password'];
|
128 |
+
// 重定向到相同页面,避免表单重复提交
|
129 |
+
header('Location: ' . $_SERVER['PHP_SELF']);
|
130 |
+
exit;
|
131 |
+
} else {
|
132 |
+
// 显示口令输入表单
|
133 |
+
echo "<form method='post'>";
|
134 |
+
echo "<input type='password' name='password' placeholder='输入口令'>";
|
135 |
+
echo "<input type='submit' value='提交'>";
|
136 |
+
echo "</form>";
|
137 |
+
}
|
138 |
+
?>
|
139 |
+
|
140 |
+
<!-- HTML 和 JavaScript 部分 -->
|
141 |
+
<html>
|
142 |
+
<head>
|
143 |
+
<title>图片上传</title>
|
144 |
+
<!-- 引入image-compression库 -->
|
145 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/image-compression/1.0.10/image-compression.min.js"></script>
|
146 |
+
<!-- 其他头部信息 -->
|
147 |
+
</head>
|
148 |
+
<body>
|
149 |
+
<!-- 相册管理界面的HTML代码 -->
|
150 |
+
|
151 |
+
<!-- 加载外部JavaScript文件 -->
|
152 |
+
<script src="imageUpload.js"></script>
|
153 |
+
</body>
|
154 |
+
</html>
|