【问题标题】:Set HTTP username/password from PHP从 PHP 设置 HTTP 用户名/密码
【发布时间】:2012-07-26 17:21:56
【问题描述】:

我的设置无法使用直接链接下载文件,除非使用 HTTP 身份验证提供用户名/密码。

我想创建一个链接到下载的页面,当访问该页面时,它会设置 HTTP 用户名和密码,因此用户永远不会看到 HTTP 身份验证框。 (但是,如果他们尝试直接下载文件,他们就不能。)

$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW'] 提供了一种读取但不设置这些值的方法。

【问题讨论】:

  • 如果您似乎不关心文件是否受到保护,为什么不直接移动文件?
  • 等等。因此,您希望每个人都必须进行身份验证……但您还希望访问您网站的每个人都自动进行身份验证?这样做有什么意义?
  • 也许文件存档保存在与将在其上进行身份验证的基于 PHP 的系统不同的服务器上。
  • 或者其目的可能是只允许以前访问过各种登录页面(设置用户名/密码)的用户进行下载。我认为这个问题需要澄清。
  • 问题需要澄清。

标签: php apache http permissions


【解决方案1】:

您可以通过在 URL 中输入用户名和密码来访问 HTTP-auth 链接:

http://username:password@archive.example.com/path/to/file.zip

请注意,并非所有浏览器都支持这种表示法,或者用户可以在浏览器中配置对它的支持。您需要在对您很重要的平台上对此进行测试。

请注意,您的问题很可能有更好的解决方案。

【讨论】:

  • 我真的不认为有更好的解决方案,除了不使用HTTP身份验证。
  • 这看起来是一个很有前途的解决方案,但it appears that Internet Explorer does not allow this
  • ie 会阻止它,Firefox 会发出警告。几年前,有人发现您可以创建一个类似bankofamerica.com:login@haxorsite.com 的网址,然后人们会点击该链接并相信它会指向美国银行网站。
  • @fluteflute - 这就是为什么我警告说它需要在您的环境中进行测试。在不知道这是用于 Internet 上的公共消费还是在始终使用静态 Firefox 配置的公司网络上限制访问时,我能提供的最好的就是警告。
  • 当然,“我该怎么做”的最佳答案是 Joshua 的回答:“不要。”
【解决方案2】:

这是个坏主意!身份验证是为了确保你就是你所说的那个人。相反,您使用它作为一种方法来控制对给定资源的访问。

如果您想强制某人通过网关页面,生成一个随机查询字符串,并在匹配时使用header() 设置 HTTP 元数据并使用fpassthru()sendfile() 发送内容。

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多