博主 Easy
湘ICP备19010648号-1博主 12月15日 在线自豪地使用 Typecho 建站搭配使用 🌻Sunny 主题当前在线 1 人
歌曲封面 未知作品
  • 歌曲封面3D劲爆环绕 高速狂飙 超嗨硬曲 车载DJ串烧大碟DJ
  • 歌曲封面Love Is Gone (Acoustic)Dylan Matthew
  • 歌曲封面8D环绕电音(重低音版)陈烁
  • 歌曲封面(9D劲爆环绕)带上你的耳机震撼大脑李寒

湘ICP备19010648号-1

网站已运行 46 天 3 小时 16 分

Powered by Typecho & Sunny

2 online · 42 ms

Easy 虽然已经流逝的东西无法消磨,但可以克服它。《数码宝贝》
Title

[网站源码]html+php程序更新发布源码

Easy

·

源码

·

Article

说明

在页面中可以上传整个软件包。上传后自动解压zip文件到uploads目录。

接口

通过访问 链接+upload.php?show_files=true 接口
得到每个文件的更新时间,版本号,MD5等信息数据,可根据每个插件选择部分自动更新。

部分代码

♾️ html 代码:
    <?php
    $configFilePath = 'config/config.php';// 配置文件路径
    $configArray = require_once($configFilePath);// 读取配置文件内容为数组
    $uploadsDir = 'uploads';// 上传文件保存目录
    $maxFileSize = 50 * 1024 * 1024;// 安全优化:限制上传文件大小为50MB(可根据实际需求调整)
    if (!is_dir($uploadsDir)) {mkdir($uploadsDir);}// 检查上传目录是否存在,不存在则创建

    // 定义函数用于返回JSON数据并设置Content-Type头部信息
    function sendJsonResponse($data) {header('Content-Type: application/json');echo json_encode($data);}

// 根据请求方法处理不同的操作
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 处理文件上传相关操作
    if (isset($_FILES['updateFile'])) {
        $updateFile = $_FILES['updateFile'];
        // 安全优化:检查上传文件大小是否超过限制
        if ($updateFile['size'] > $maxFileSize) {
            $response = [
                'success' => false,
                'message' => '上传文件过大,请选择不超过50MB的文件。'
            ];
            sendJsonResponse($response);
            exit;
        }
        // 检查上传密码是否正确
        $passwordEntered = $_POST['password']?? '';
        if (!password_verify($passwordEntered, $configArray['password'])) {
            $response = [
                'success' => false,
                'message' => '密码错误,请重新输入。'
            ];
            sendJsonResponse($response);
            exit;
        }
        // 处理上传的文件
        $versionNumber = $_POST['versionNumber']?? '';
        $updateContent = $_POST['updateContent']?? '';
        // 更新配置文件中的版本号和更新内容
        $configArray['version_number'] = $versionNumber;
        $configArray['update_content'] = $updateContent;
        // 解压上传的ZIP文件
        $zip = new ZipArchive();
        if ($zip->open($updateFile['tmp_name']) === true) {
            $zip->extractTo($uploadsDir);
            $zip->close();
            $response = [
                'success' => true,
                'message' => '文件上传并解压成功。'
            ];
            sendJsonResponse($response);
        } else {
            $response = [
                'success' => false,
                'message' => '文件上传失败,请稍后重试。'
            ];
            sendJsonResponse($response);
        }
    } elseif (isset($_POST['old_password']) && isset($_POST['new_password']) && isset($_POST['confirm_new_password'])) {
        // 处理密码修改相关操作
        $oldPassword = $_POST['old_password'];
        $newPassword = $_POST['new_password'];
        $confirmNewPassword = $_POST['confirm_new_password'];

        // 验证旧密码是否正确
        if (!password_verify($oldPassword, $configArray['password'])) {
            $response = [
                'success' => false,
                'message' => '旧密码错误,请重新输入。'
            ];
            sendJsonResponse($response);
            exit;
        }
        // 检查新密码和确认新_password 是否一致
        if ($newPassword!== $confirmNewPassword) {
            $response = [
                'success' => false,
                'message' => '新密码和确认新密码不一致,请重新输入。'
            ];
            sendJsonResponse($response);
            exit;
        }
        // 生成新密码的哈希值
        $hashedNewPassword = password_hash($newPassword, PASSWORD_DEFAULT);
        // 修改配置文件中的密码
        $configArray['password'] = $hashedNewPassword;
        $response = [
            'success' => true,
            'message' => '密码修改成功。'
        ];
        sendJsonResponse($response);
    }
} elseif (isset($_GET['show_files']) && $_GET['show_files'] === 'true') {
    // 列出解压后的文件信息
    $filesInfo = [];
    $versionNumber = $configArray['version_number'];
    $updateContent = $configArray['update_content'];
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($uploadsDir));
    foreach ($iterator as $file) {
        if ($file->isFile()) {
            $fileInfo = [
                'file_path' => $file->getPathname(),
                'file_md5' => md5_file($file->getPathname()),
                'file_modified_time' => $file->getMTime()
            ];
            $filesInfo[] = $fileInfo;
        }
    }
    $response = [
        'files' => $filesInfo,
        'version_number' => $versionNumber,
        'update_content' => $updateContent,
        'beijing_time' => date('Y-m-d H:i:s', time() + 8 * 3600)
    ];
    sendJsonResponse($response);
}

    $newConfigContent = "<?php\nreturn ". var_export($configArray, true). ";\n?>";
    file_put_contents($configFilePath, $newConfigContent);




?>

代码简单明了,都带注释,新手应该也能整明白。

此处内容,需回复之后可见

现在已有 154 次阅读,0 条评论,4 人点赞
Author:Easy
作者
[网站源码]html+php程序更新发布源码
当前文章累计共 4821 字,阅读大概需要 1 分钟。
[网站源码]html+php程序更新发布源码
2024年11月27日 · 0评论
变天咯
2024年11月13日 · 1评论
网恋照妖镜已重新开启
2024年11月20日 · 0评论
Comment:共0条
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主