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

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

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

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

curl和wget忽略证书错误教程

curl和wget是我们常用的Linux下载测试工具如果遇到下载报错可以按下面方法操作如果是curl ssl证书错误其实只要在url地址后面加上 -k,就可以忽略证书校验了(不验证证书)。具体就是这样操作:curl  'https://下载地址' -k如...

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

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

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

搭建Syncthing发现和中继服务器和配置Syncthing客户端

搭建Syncthing发现和中继服务器和配置Syncthing客户端

折腾借口Syncthing好是挺好的,但就是同步不给力,公共网络服务其质量参差不齐,网络也说不清。最好的解决方案还是自己搭建发现服务器Syncthing Discovery Server和中继服务器Syncthing Relay Server,有效解决网络连接差,非局域网连接慢的问题。不同于Resi...

魔方财务迁移教程

魔方财务迁移教程

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

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

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

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

Notpad++编辑器下载

Notepad++是一款免费的文本编辑器,是Windows系统上最受欢迎的文本编辑器之一。它支持多种编程语言,包括C、C++、Java、JavaScript、HTML、CSS等等,同时也支持多种文件格式,包括ANSI、UTF-8、UTF-16等等。Notepad++具有语法高亮、自动完成、括号匹配、...