当前位置: 首页 > news >正文

简易小说文件查看器

简易小说文件查看器

<?php
// viewer.php - 小说目录文件列表查看器
if (!isset($_GET['novel']) || empty($_GET['novel'])) {die('无效的小说名称');
}$novelName = $_GET['novel'];
$novelDir = "小说/" . $novelName;// 安全检查,防止路径遍历攻击
if (!is_dir($novelDir) || strpos($novelName, '..') !== false || strpos($novelName, '/') !== false) {die('小说不存在');
}// 获取小说目录下的所有文件
$files = array();
if (is_dir($novelDir)) {$dirContents = scandir($novelDir);foreach ($dirContents as $item) {if ($item === '.' || $item === '..') continue;$itemPath = $novelDir . '/' . $item;if (is_file($itemPath)) {$files[] = array('name' => $item,'path' => $item);}}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title><?php echo htmlspecialchars($novelName); ?> - 文件列表</title><style>body {font-family: "Microsoft YaHei", Arial, sans-serif;line-height: 1.6;max-width: 800px;margin: 0 auto;padding: 20px;background-color: #f9f9f9;
        }.header {text-align: center;margin-bottom: 20px;padding-bottom: 10px;border-bottom: 1px solid #ddd;
        }.novel-content {background: white;padding: 20px;border-radius: 5px;box-shadow: 0 1px 3px rgba(0,0,0,0.1);min-height: 400px;}.back-link {display: inline-block;margin-bottom: 20px;color: #007cba;text-decoration: none;}.back-link:hover {text-decoration: underline;}.file-list {list-style-type: none;padding: 0;}.file-list li {padding: 10px;border-bottom: 1px solid #eee;
        }.file-list li:last-child {border-bottom: none;}.file-list a {color: #007cba;text-decoration: none;font-size: 16px;}.file-list a:hover {text-decoration: underline;}</style>
</head>
<body><div class="header"><h1><?php echo htmlspecialchars($novelName); ?> - 文件列表</h1></div><a href="novel.php" class="back-link">&laquo; 返回小说列表</a><div class="novel-content"><?php if (!empty($files)): ?><ul class="file-list"><?php foreach ($files as $file): ?><li><a href="<?php echo htmlspecialchars("小说/" . rawurlencode($novelName) . "/" . rawurlencode($file['path'])); ?>"><?php echo htmlspecialchars($file['name']); ?></a></li><?php endforeach; ?></ul><?php else: ?><p>该小说目录下暂无文件。</p><?php endif; ?></div>
</body>
</html>

使用

 $viewerPath = 'viewer.php?novel=' . $encodedFile;
echo "<li><a href='" . htmlspecialchars($viewerPath) . "'>" . htmlspecialchars($file) . "</a></li>";

 

http://www.jsqmd.com/news/29961/

相关文章:

  • 2025年11月珠海酒店评价榜:商务休闲双需求住宿对比指南
  • 2025年建筑模型行业权威测评:中国建筑模型专业公司排名与深度解析
  • 前端chatbox
  • 2025年11月合肥建筑律师推荐榜:全过程覆盖能力对比评价
  • 空间计量模型,包括空间滞后模型、空间误差模型和空间杜宾模型
  • 2025 年塑料挤出设备厂家最新推荐榜单:深度甄选聚焦技术实力、客户认可及设备性能全方位测评塑料板材挤出设备/塑料挤出设备生产线/塑料管材挤出设备生产线公司推荐
  • AtCoder Beginner Contest 430 ABCDEF 题目解析
  • 哪个文件共享平台好用?11款主流工具深度对比
  • 2025年广东空运到印度专线机构权威推荐榜单:广东到印度的海运平台/广东空运到印度物流平台/广东到印度专线双清包税服务源头机构精选
  • 2025年规模大型纸箱厂家权威推荐榜单:化妆品纸箱/包装纸箱/瓦楞纸箱源头厂家精选
  • 2025 年最新推荐锰钢编织筛网厂家排行榜,涵盖耐磨矿用等多类型产品,精选五大靠谱品牌助力企业采购滚筒/平筛/黑钢锰钢编织筛网公司推荐
  • 用四端法测量Fe-Cr-Al丝的电阻率
  • 如何选择企业私有网盘?这9款内网文件共享工具优劣全解析
  • C# Web开发教程(十一)后台主动服务
  • 2025 年国际高中学校最新推荐榜,聚焦办学资质与升学成果深度解析及教学质量与综合实力全面评估松江区 / 青浦区 / 奉贤区 / 崇明区国际高中推荐
  • 2025年汽车超薄低音源头厂家权威推荐榜单:汽车音响超薄低音/汽车超薄低音炮/汽车音响超薄低音炮源头厂家精选
  • 2025年保洁服务公司新排行榜推荐,海獭顾家无忧保洁服务详细介绍
  • 基于开源操作系统搭建K8S高可用集群
  • 2025 年阳台光伏厂家推荐:昱电宝依托昱能科技技术积淀,打造场景化光伏解决方案与服务体系
  • 【2025-11-01】连岳摘抄
  • 2025年11月全屋定制环保材料公司推荐榜单:五家优质企业综合对比分析
  • 2025年度锂电池回收再利用机器制造厂排名:口碑好的锂电池回收设备厂家推荐
  • 2025年五大游乐设备优质厂家推荐,景区游乐设备厂实力全解析
  • 2025年11月全屋定制环保材料公司评测:从资质到服务的全面考察
  • using关键字笔记
  • 2025年郑州口碑不错的大巴车租赁专业公司推荐,知名的大巴车租赁企业实力全解析
  • 【程序算法题】洛谷, P1760 通天之汉诺塔, java实现。
  • 雷池 WAF 免费版深度体验:企业用 Lua 脚本拓展,护住跨境电商
  • 2025年度中国靠谱房地产模型公司排行:房地产模型服务商推荐
  • vscode配置MCP