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

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

23vps11个月前 (06-04)其他286

这是一个简单的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文件分享代码,可设置分享链接有效期并隐藏真实下载地址” 的相关文章

用户访问nginx网站任意目录或者文件自动跳转到网站根目录方法

用户访问nginx网站任意目录或者文件自动跳转到网站根目录方法

主机哥最近网站需要维护,导致用户访问不到之前的页面,需要统一跳转到根目录显示维护提示,网上找到了301和302跳转这两种方法大多会出现重定向次数过多的情况最后找到一种方法就是修改nginx配置文件实现了用户访问nginx网站任意目录或者文件自动301或者302跳转到根目录宝塔站点修改nginx配置文...

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

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

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

debian/ubuntu/centos7系统安装syncthing文件同步软件教程

debian/ubuntu/centos7系统安装syncthing文件同步软件教程

实验系统:debian10/ubuntu/CentOS7 64位用putty或者其他ssh工具连上服务器,然后用wget命令下载Syncthing的Linux 64位版,版本号对应官网上的最新版,请自行选择:wget https://github.com/syncthing/syncthi...

网络测压小工具webBenchmark

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

windows server 2019 Hyper-V 开nat小鸡学习笔记

windows server 2019 Hyper-V 开nat小鸡学习笔记

主机哥开了台16-16的云主机,恰巧支持嵌套虚拟化,于是拿来测试下开小鸡,做个笔记。主机哥后来用windows server 2019物理机安装hyper-v然后给小鸡开启嵌套虚拟化后也成功小鸡生小鸡(俗称套娃)。教程准备:windows server 2019 服务器英文版改成中文由于主机哥的主机...

魔方财务迁移教程

魔方财务迁移教程

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