【问题标题】:How to use PHP page to read file outside doc root, but still disallow direct access to the file如何使用 PHP 页面读取文档根目录之外的文件,但仍不允许直接访问该文件
【发布时间】:2015-12-14 18:55:18
【问题描述】:

我根本不是 PHP 大师,但几年前我是一名前端网页设计师。我创建了一个使用this 音频播放器播放 MP3 的页面。我想阻止用户直接下载 MP3 文件,所以我将它们放在文档根目录之外,并使用this 脚本使用 PHP 加载文件。问题是任何人都可以将脚本用来调用文件的 URL 输入浏览器以下载 MP3。

我尝试在调用 MP3 的 PHP 页面上放置一个变量,然后告诉文件调用脚本,如果变量不匹配,则将用户重定向回主页。因此,如果用户将脚本用于调用文件的 URL 放入浏览器,他们只会重定向回主页。重定向有效,但存在实际变量的 PHP 页面似乎无法在变量存在时允许 PHP 脚本调用 MP3。

有没有更好的方法来解决这个问题?我对 PHP 非常陌生。

【问题讨论】:

  • 如果您的服务器使用 Apache,您可以使用 .htaccess 文件限制用户直接请求(您的脚本仍然可以访问这些文件)。
  • 你能解释一下我会怎么做吗?音频付款人使用javascript,所以如果我在.htaccess 中使用deny from all 则它不起作用。

标签: php mp3


【解决方案1】:

您需要某种用户身份验证。

例如,您可以为用户(具有用户名或 ID)生成随机令牌(一些复杂的东西),并让用户根据歌曲的请求发送他们的令牌和 ID。

在执行 mp3 流式传输的代码之前,您检查令牌和 ID 的组合是否匹配,并且实际上它存在于数据库中。如果是这样,您允许继续流式传输/下载 mp3。

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 2015-07-09
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    相关资源
    最近更新 更多