refactor: 拆分 config.php 为 lib/ 模块,消除页面层重复代码
纯结构性重构,不改变任何功能。 - config.php 由 739 行缩减为 42 行,改为纯引导入口;新增 ROOT_DIR 常量 统一拼接绝对路径(lib/ 内模块的 __DIR__ 会指向 lib/,必须替换) - 新增 lib/ 五个模块 db.php / helpers.php / auth.php / movies.php / stats.php, 由 config.php 按 db → helpers → auth → movies → stats 顺序加载 - add.php、edit.php 各自约 80 行重复的 POST 处理改为调用 resolveCinemaId / resolvePersonIds / linkViewers / uploadImageFile / saveBase64Image / uploadMultiplePhotos / deleteStoredFile - cinemas.php、persons.php 中重复 4 次的颜色校验改用 normalizeHexColor() - toggleNewViewer / removeViewerRow / toggleNewCinema 下沉至 js/main.js, add.php 中的 removeViewer 统一更名为 removeViewerRow - 删除死代码:imageUrl()(全项目无调用);cinemas.php 配色数组中本就会被 array_slice 丢弃的 extra 颜色逻辑,简化为单条扁平 50 元素数组 - README 目录结构补充 lib/ 说明 验证方式:以便携 PHP 8.4 搭建 A/B 回归环境,播种固定数据后遍历 47 个 GET/POST 端点录制「状态码 + 响应体」。重构前后 42 个逐字节相同、2 个仅 上传文件名时间戳不同、3 个差异均为内联脚本下沉(已单独校验函数体逐字符 等价,剥离脚本后 HTML 标记完全一致)。24 个 PHP 文件语法检查全部通过。
This commit is contained in:
+12
-35
@@ -17,11 +17,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['
|
||||
$place = trim($_POST['place'] ?? '');
|
||||
$name = trim($_POST['name'] ?? '');
|
||||
$address = trim($_POST['address'] ?? '');
|
||||
$color = trim($_POST['color'] ?? '#888888');
|
||||
// 校验颜色格式
|
||||
if (!preg_match('/^#[a-fA-F0-9]{6}$/', $color)) {
|
||||
$color = '#888888';
|
||||
}
|
||||
$color = normalizeHexColor($_POST['color'] ?? '#888888');
|
||||
|
||||
if (empty($name)) {
|
||||
$error = '影院名称不能为空';
|
||||
@@ -38,10 +34,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['
|
||||
$place = trim($_POST['place'] ?? '');
|
||||
$name = trim($_POST['name'] ?? '');
|
||||
$address = trim($_POST['address'] ?? '');
|
||||
$color = trim($_POST['color'] ?? '#888888');
|
||||
if (!preg_match('/^#[a-fA-F0-9]{6}$/', $color)) {
|
||||
$color = '#888888';
|
||||
}
|
||||
$color = normalizeHexColor($_POST['color'] ?? '#888888');
|
||||
|
||||
if (empty($name)) {
|
||||
$error = '影院名称不能为空';
|
||||
@@ -91,35 +84,19 @@ if (isset($_GET['action']) && $_GET['action'] === 'edit' && isset($_GET['id']))
|
||||
}
|
||||
}
|
||||
|
||||
// ---------- 预设50色 ----------
|
||||
// ---------- 预设 50 色 ----------
|
||||
$preset_colors = [
|
||||
// 红色系 (5)
|
||||
'#e74c3c', '#c0392b', '#e67e22', '#d35400', '#f39c12',
|
||||
// 橙色系 (3)
|
||||
'#f1c40f', '#f7dc6f', '#f5b041',
|
||||
// 黄色系 (3)
|
||||
'#f4d03f', '#f9e79f', '#f8c471',
|
||||
// 绿色系 (5)
|
||||
'#2ecc71', '#27ae60', '#1abc9c', '#16a085', '#58d68d',
|
||||
// 青色系 (4)
|
||||
'#48c9b0', '#45b39d', '#82e0aa', '#a3e4d7',
|
||||
// 蓝色系 (7)
|
||||
'#3498db', '#2980b9', '#2e86c1', '#5dade2', '#85c1e9', '#5499c7', '#aed6f1',
|
||||
// 紫色系 (5)
|
||||
'#9b59b6', '#8e44ad', '#af7ac5', '#bb8fce', '#d2b4de',
|
||||
// 粉色系 (4)
|
||||
'#e84393', '#fd79a8', '#e91e63', '#f06292',
|
||||
// 灰色系 (6)
|
||||
'#95a5a6', '#7f8c8d', '#bdc3c7', '#d5dbdb', '#aab7b8', '#99a3a4',
|
||||
// 棕色/米色系 (4)
|
||||
'#a67c52', '#8d6e63', '#d4a574', '#c9a87c',
|
||||
// 其他 (4)
|
||||
'#00b894', '#0984e3', '#6c5ce7', '#fd79a8'
|
||||
'#f1c40f', '#f7dc6f', '#f5b041', '#f4d03f', '#f9e79f',
|
||||
'#f8c471', '#2ecc71', '#27ae60', '#1abc9c', '#16a085',
|
||||
'#58d68d', '#48c9b0', '#45b39d', '#82e0aa', '#a3e4d7',
|
||||
'#3498db', '#2980b9', '#2e86c1', '#5dade2', '#85c1e9',
|
||||
'#5499c7', '#aed6f1', '#9b59b6', '#8e44ad', '#af7ac5',
|
||||
'#bb8fce', '#d2b4de', '#e84393', '#fd79a8', '#e91e63',
|
||||
'#f06292', '#95a5a6', '#7f8c8d', '#bdc3c7', '#d5dbdb',
|
||||
'#aab7b8', '#99a3a4', '#a67c52', '#8d6e63', '#d4a574',
|
||||
'#c9a87c', '#00b894', '#0984e3', '#6c5ce7', '#fd79a8',
|
||||
];
|
||||
// 只取前50个,如果有重复或不足可调整,但这里正好约50个(实际46个,再补几个)
|
||||
$extra = ['#2d3436', '#636e72', '#b2bec3', '#dfe6e9', '#fab1a0', '#e17055', '#00cec9', '#a29bfe'];
|
||||
$preset_colors = array_merge($preset_colors, $extra);
|
||||
$preset_colors = array_slice($preset_colors, 0, 50); // 确保正好50个
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
|
||||
Reference in New Issue
Block a user