功能模块: - 观影记录:列表(瀑布流)/ 添加 / 编辑 / 详情 / 删除,删除时同步清理图片文件 - 首页快捷搜索 + 高级搜索(片名、影院、观影人、日期区间组合筛选) - 影院管理:三段式信息 + 50 种预设配色,删除已引用影院时二次确认 - 观影人管理:头像裁剪上传 + 专属配色,已引用者禁止删除 - 图片处理:Cropper.js 裁剪票根/海报/观影照片/头像,多图上传,首字母 SVG 头像兜底 - OMDb 自动获取影片信息(fetch_movie.php 代理,返回 JSON) - CSV 批量导入:UTF-8/GBK 自动识别,影院去重,事务保护,逐行错误报告 - 统计仪表板:总览 + 按影院/观影人/年份/近 12 个月排行 - 年度报告:按账号关联的观影人视角生成,含 Chart.js 月度与星期分布图 - 多用户:账号增删改、账号与观影人绑定、修改自己的用户名与密码 - 登录鉴权:Session + password_hash,全站页面登录校验 文档: - 重写 README:功能特性、技术栈、目录结构、数据库结构、部署与使用指南、接口说明、CSV 格式、安全注意事项、已知限制 - 新增 .gitignore,排除 db/ 与 uploads/ 等运行时数据
42 lines
1.2 KiB
PHP
42 lines
1.2 KiB
PHP
<?php
|
|
require_once 'config.php';
|
|
checkLogin();
|
|
|
|
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
|
if ($id <= 0) {
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
|
|
$db = getDB();
|
|
|
|
// 获取所有图片路径(海报、票根、旧照片、新多照片)
|
|
$stmt = $db->prepare("SELECT poster_path, ticket_path, photo_path FROM movies WHERE id = ?");
|
|
$stmt->execute([$id]);
|
|
$movie = $stmt->fetch();
|
|
|
|
if ($movie) {
|
|
// 删除海报、票根、旧单张照片
|
|
foreach (['poster_path', 'ticket_path', 'photo_path'] as $field) {
|
|
if (!empty($movie[$field]) && file_exists(__DIR__ . '/' . $movie[$field])) {
|
|
unlink(__DIR__ . '/' . $movie[$field]);
|
|
}
|
|
}
|
|
|
|
// 删除多张照片(新表)
|
|
$stmt2 = $db->prepare("SELECT photo_path FROM movie_photos WHERE movie_id = ?");
|
|
$stmt2->execute([$id]);
|
|
$photos = $stmt2->fetchAll();
|
|
foreach ($photos as $p) {
|
|
if (!empty($p['photo_path']) && file_exists(__DIR__ . '/' . $p['photo_path'])) {
|
|
unlink(__DIR__ . '/' . $p['photo_path']);
|
|
}
|
|
}
|
|
|
|
// 删除电影(viewers 和 movie_photos 会自动级联删除)
|
|
$stmt = $db->prepare("DELETE FROM movies WHERE id = ?");
|
|
$stmt->execute([$id]);
|
|
}
|
|
|
|
header('Location: index.php');
|
|
exit; |