【问题标题】:hide original download link from user对用户隐藏原始下载链接
【发布时间】:2012-11-15 06:52:06
【问题描述】:
  1. 主链接是:yourname.com/movie/film.mkv

  2. 用户下载链接:yourname.com/2012/Esx123Sxzz96/film/

如何在不让用户看到主链接的情况下将链接 2 切换到链接 1 它出现在下载管理器中?

【问题讨论】:

  • 这个链接可以是其他格式,链接2有镜像链接1没有用户理解

标签: php hyperlink download


【解决方案1】:

首先,如果您想保护您的网站不让用户直接访问数据,请使用 .htaccess 防止直接访问 /movie/ 文件夹。

然后,通过 php 传递文件,首先发送适当的header,有关详细信息,请参阅this thread

如果您的电影是大文件,请考虑使用其他方法来发送文件,例如我自己从未使用过的x-sendfile,有关详细信息,请参阅this answer

编辑:如果您没有用户身份验证、统计跟踪、下载限制等...并且只是想重写您可以使用.htaccess 到@987654328 的路径@ 路径(尽管使用您提供的第二种路径,但您似乎需要逻辑来提取所需的路径)。如果您不关心用户在单击链接后知道“秘密路径”,您可以简单地使用 header('Location: yourname.com/movie/film.mkv"); - 这将允许用户为您的文件设置书签,而不必通过您的 @987654330再次@路径。

重新编辑显然,真正的问题是如何创建一个完整的系统来存储媒体,然后通过“不同”路径访问,隐藏源。

我要做的是为您要存储的每个媒体建立一个列表或数据库。将项目添加到列表时,请为其指定唯一 ID。为了简单起见,让我们从 0 开始,并为每个文件递增 1。您可以将来自媒体的更多信息存储在列表/数据库中,例如每部电影的长度、文件大小等...

然后,当你想向用户列出这些文件时,你只需hash id,你可以使用this 之类的东西,它会创建一个字符串,比如U6dc...现在可以建立链接使用:<a href="mysite/files/$hashedValue">Link for $filename</a>

使用.htaccess 拦截对mysite/files/ 的调用并将其重定向到files.php,这将负责将参数U6dc 转换为列表中的ID。获得此 ID 后,您可以轻松找到驱动器上的媒体并将其发送给用户,可能使用 x-sendfile,由您决定。

【讨论】:

  • 通过 PHP 传递 movie 似乎不合逻辑。
  • 想提出更好的解决方案?
  • 糟糕的建议。抱歉,一旦您阅读了要求,保护文件免受不允许获取电影或任何文件的用户的影响,这是合乎逻辑的。
  • @N.B.:为什么这是一个糟糕的建议?重写 URL 是一种非常常见的做法。每个人都错了吗?而且我确实阅读了要求 - 为什么通过 PHP 脚本传递可能达到几兆字节的数据是合乎逻辑的?这永远不会合乎逻辑——这将是疯狂的。
  • 因为如果使用简单的 URL 重写就无法实现认证机制。此外,您不必一次传递整个文件,您可以分块发送它,这是实际使用的方法,而不是 PHP 的 readfile。因此,如果你想实现 auth/counters/stats/whatever - 这是合乎逻辑的。
【解决方案2】:

使用 .htaccess,您可以声明自己的条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-12
    • 2023-01-14
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2020-12-26
    相关资源
    最近更新 更多