当前位置:首页 > 其他 > 正文内容

php文件分享代码,可设置分享链接有效期并隐藏真实下载地址

23vps1年前 (2023-06-04)其他458

这是一个简单的PHP文件分享程序,以下是程序的基本功能:

  1. 首页需要登录才能显示

    阿里云限量代金券 | 此广告位出租25元/月
  2. 显示指定目录下的所有文件

  3. 给每个文件生成分享按钮

  4. 点击分享按钮会自动复制分享链接

  5. 分享链接1小时后失效,无法从分享链接中找到真实下载源

请注意,这个程序只是一个简单的示例,您需要根据具体需求进行修改和优化,并加强安全措施。

以下是程序的代码:

index.php:

<?php
session_start();

// 检查是否登录
if (!isset($_SESSION['username'])) {
    header('Location: login.php');
    exit;
}

// 指定分享目录
$share_dir = './share/';

// 获取分享目录下的所有文件
$files = scandir($share_dir);

// 过滤掉 . 和 .. 文件
$files = array_filter($files, function($file) {
    return $file != '.' && $file != '..';
});

// 生成分享链接
function generate_share_link($filename) {
    $timestamp = time() + 3600; // 1小时后失效
    $hash = md5($filename . $timestamp);
    return 'http://example.com/download.php?file=' . urlencode($filename) . '&hash=' . $hash . '&timestamp=' . $timestamp;
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>文件分享</title>
</head>
<body>
    <h1>文件分享</h1>

    <p>欢迎 <?php echo $_SESSION['username']; ?>,以下是您可以分享的文件:</p>

    <ul>
        <?php foreach ($files as $file): ?>
            <li>
                <?php echo $file; ?> 
                <button onclick="copyToClipboard('<?php echo generate_share_link($file); ?>')">分享</button>
            </li>
        <?php endforeach; ?>
    </ul>

    <script>
        // 复制分享链接到剪贴板
        function copyToClipboard(text) {
            var input = document.createElement('input');
            input.setAttribute('value', text);
            document.body.appendChild(input);
            input.select();
            document.execCommand('copy');
            document.body.removeChild(input);
            alert('分享链接已复制到剪贴板');
        }
    </script>
</body>
</html>

download.php:

<?php
// 检查链接是否过期
if ($_GET['timestamp'] < time()) {
    die('链接已过期');
}

// 检查链接是否被篡改
$hash = md5($_GET['file'] . $_GET['timestamp']);
if ($_GET['hash'] != $hash) {
    die('链接无效');
}

// 下载文件
$filename = './share/' . $_GET['file'];
if (file_exists($filename)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filename));
    readfile($filename);
    exit;
} else {
    die('文件不存在');
}
?>

login.php:

<!DOCTYPE html>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <h1>登录</h1>

    <form action="login.php" method="post">
        <label for="username">用户名:</label>
        <input type="text" name="username" id="username" required>

        <label for="password">密码:</label>
        <input type="password" name="password" id="password" required>

        <button type="submit">登录</button>
    </form>

    <?php
    // 处理登录请求
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        // 检查用户名和密码是否正确
        if ($_POST['username'] == 'admin' && $_POST['password'] == 'password') {
            // 登录成功,保存用户名到session中
            session_start();
            $_SESSION['username'] = $_POST['username'];

            // 跳转到首页
            header('Location: index.php');
            exit;
        } else {
            // 登录失败,显示错误信息
            echo '<p>用户名或密码错误</p>';
        }
    }
    ?>
</body>
</html>

请将上述代码保存为三个单独的文件,并将其中的example.com替换为您的网站域名。


本程序在php7.2下测试运行正常无报错

本网站由提供服务

扫描二维码推送至手机访问。

版权声明:本文由主机测评网发布,如需转载请注明出处。

本文链接:https://23vps.com/post/70.html

标签: 建站
分享给朋友:

“php文件分享代码,可设置分享链接有效期并隐藏真实下载地址” 的相关文章

Windows系统镜像下载网站

提到原版的Windows系统,各位老司机熟知的都是MSDN,但是这个网址里只能下载到Win10 1909以前的系统,后面的系统都要在新网站下载而且还得登录。而且这个对新手很不友好,当我发给装机小白的时候,他们都看不懂该选哪个。再给大家推荐一个下载Windows系统的地方,网址:https://hel...

强大无数据库图床2.0PHP程序

强大无数据库图床2.0PHP程序

项目地址:https://github.com/icret/EasyImages2.0 始于2018年7月,支持多文件上传,简单无数据库,返回图片url,markdown,bbscode,html的一款图床程序 演示地址:https://png.cm/ 之前一直用的图床程序是:PHP多图长...

网络测压小工具webBenchmark

这是一个HTTP基准测试工具,可以用来耗尽服务器带宽或流量限额。特点:每个请求都有随机的 User-Agent可自定义请求参数中的 Referer并发线程取决于您的服务器性能。项目地址:https://github.com/maintell/webBenchmark/ 起源这个起源于MJJ论坛刷“剑...

魔方财务迁移教程

魔方财务迁移教程

主机哥的魔方财务需要迁移到新的服务器压缩打包所有网站文件备份下载数据库文件在新服务器上安装宝塔添加网站设置伪静态location / { if (!-e $request_filename) { rewrite ^(.*)$ ...

parsec串流远程桌面神器,用远程桌面可以玩游戏

parsec串流远程桌面神器,用远程桌面可以玩游戏

主机哥最近发现一款不错的国外远程桌面工具,可以内网穿透直连,甚至可以流畅玩游戏看视频不卡顿,都说很厉害,自己台式机电脑上装了一下,但是用我自己笔记本电脑连接台式机时提示-15000错误:点击Read More弹出链接:https://support.parsec.app/hc/en-us/artic...

ServerStatus多服务器探针搭建教程

这是一款开源多服务器探针程序项目地址:https://github.com/cppla/ServerStatus 它支持Docker一键部署,也支持手动部署主机哥喜欢Docker一键部署的方式,下面介绍下Docker一键部署的方法服务端Docker: wget --no-check-ce...