列出网站资源的php代码

列出网站资源

现在我已经查看了所有相关文件,包括index.php、book.php,我可以全面描述这些代码的功能、工作原理和部署方法了。# 代码功能与部署说明

功能概述

这套代码是一个简单的受密码保护的资源管理系统,用于分类展示和下载音频文件与书籍文件。

主要功能模块

1. 密码保护机制

  • 使用PHP会话(session)实现用户认证
  • 密码硬编码为:XXXXXXX
  • 未登录用户会被重定向到密码输入页面
  • 支持用户登录状态的保持和退出功能

2. 资源分类展示

  • 音频文件:来自”财富宝”和”健康宝”两个目录,仅显示.mp3格式文件
  • 书籍文件:来自”books”目录,显示.pdf和.epub格式文件
  • 资源按目录结构分类展示,每个目录下的文件以列表形式呈现

3. 文件下载功能

  • 所有资源文件都提供直接下载链接
  • 使用HTML5的download属性实现文件下载

4. 退出登录功能

  • 提供退出登录按钮
  • 点击后销毁会话并重定向到登录页面

代码结构与工作原理

核心文件说明

index.php(推荐使用)

  • 最新版本,结构清晰
  • 同时展示音频和书籍资源,分类明确
  • 页面标题为”资源列表”

book.php

  • 功能与index.php类似
  • 页面标题为”资源文件列表”

index0.php(旧版本)

  • 仅显示音频文件,不包含书籍文件
  • 页面标题为”音频文件列表”

代码执行流程

  1. 用户访问:用户访问index.php文件
  2. 身份验证:检查用户是否已登录
  • 未登录:显示密码输入表单
  • 已登录:继续执行
  1. 资源展示
  • 扫描指定目录
  • 过滤出符合条件的文件类型
  • 生成带下载链接的文件列表
  1. 用户操作
  • 点击文件链接下载资源
  • 点击退出按钮销毁会话并返回登录页面

部署方法

环境要求

  • 支持PHP 5.4+的Web服务器(如Apache、Nginx、IIS等)
  • 服务器需开启session支持

部署步骤

  1. 准备文件
  • 将所有PHP文件(index.php、book.php、index0.php)上传到Web服务器的网站目录
  • 确保资源目录(books、财富宝、健康宝)与PHP文件在同一目录下
  1. 目录权限设置
  • 确保Web服务器对资源目录有读取权限
  • 对于Windows服务器,通常无需额外设置
  • 对于Linux服务器,可使用chmod命令设置适当权限
  1. 访问设置
  • 确保Web服务器已配置为支持PHP文件解析
  • 测试PHP环境是否正常工作
  1. 使用方式
  • 通过浏览器访问:http://你的域名/xl/index.php
  • 输入密码:XXXXXXX
  • 即可查看和下载所有资源文件

注意事项

  1. 密码安全:当前密码硬编码在代码中,生产环境建议使用更安全的密码存储方式
  2. 文件类型:系统仅显示特定格式的文件,如需支持其他格式,需修改代码中的扩展名判断条件
  3. 目录结构:资源目录名称和结构不可随意更改,否则需同步修改代码中的目录配置
  4. 中文支持:系统已配置UTF-8编码,支持中文文件名和目录名

系统特点

  • 简单易用,无需复杂配置
  • 分类清晰,便于资源管理
  • 安全可靠,密码保护访问
  • 跨平台兼容,支持各种Web服务器环境

PHP代码

<?php
// 设定访问密码
$password = "XXXX";
// 启动会话
session_start();

// 检查用户是否已登录
if (!isset($_SESSION['authenticated']) || $_SESSION['authenticated'] !== true) {
    // 检查是否提交了密码表单
    if (isset($_POST['password'])) {
        if ($_POST['password'] === $password) {
            // 密码正确,标记用户为已登录
            $_SESSION['authenticated'] = true;
        } else {
            // 密码错误,显示错误信息
            $error = "密码错误,请重试。";
        }
    }

    if (!isset($_SESSION['authenticated']) || $_SESSION['authenticated'] !== true) {
        // 显示密码输入表单
        ?>
        <!DOCTYPE html>
        <html lang="zh-CN">
        <head>
            <meta charset="UTF-8">
            <title>请输入密码</title>
        </head>
        <body>
            <?php if (isset($error)) { echo "<p style='color: red;'>$error</p>"; } ?>
            <form method="post">
                <label for="password">请输入访问密码:</label>
                <input type="password" id="password" name="password" required>
                <input type="submit" value="提交">
            </form>
        </body>
        </html>
        <?php
        exit;
    }
}

// 定义目录
$audioDirectories = ['财富宝', '健康宝'];
$bookDirectories = ['books'];

// 列出每个目录下的文件
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>资源列表</title>
</head>
<body>
    <h1>资源列表</h1>
    
    <!-- 音频文件部分 -->
    <h2>音频文件</h2>
    <?php
    foreach ($audioDirectories as $directory) { 
        if (is_dir($directory)) { 
            echo "<h3>$directory</h3>"; 
            echo "<ul>"; 
            $files = scandir($directory); 
            foreach ($files as $file) { 
                if ($file != '.' && $file != '..') {
                    $filePath = $directory . '/' . $file;
                    if (is_file($filePath)) {
                        $extension = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));
                        if ($extension === 'mp3') { 
                            echo "<li><a href='$directory/$file' download>$file</a></li>"; 
                        } 
                    }
                }
            } 
            echo "</ul>"; 
        } 
    } 
    ?>
    
    <!-- 书籍文件部分 -->
    <h2>书籍文件</h2>
    <?php
    foreach ($bookDirectories as $directory) { 
        if (is_dir($directory)) { 
            echo "<h3>$directory</h3>"; 
            echo "<ul>"; 
            $files = scandir($directory); 
            foreach ($files as $file) { 
                if ($file != '.' && $file != '..') {
                    $filePath = $directory . '/' . $file;
                    if (is_file($filePath)) {
                        $extension = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));
                        if ($extension === 'pdf' || $extension === 'epub') { 
                            echo "<li><a href='$directory/$file' download>$file</a></li>"; 
                        } 
                    }
                }
            } 
            echo "</ul>"; 
        } 
    } 
    ?>
    
    <form method="post" action="?logout">
        <input type="submit" value="退出登录">
    </form>
</body>
</html>

<?php
// 处理退出登录
if (isset($_GET['logout'])) {
    session_destroy();
    header("Location: index.php");
    exit;
}
?>