我有一个设置,其中文件不能使用直接链接下载,除非使用HTTP身份验证提供用户名/密码。从PHP设置HTTP用户名/密码
我想创建一个链接到下载的页面,访问时设置HTTP用户名和密码,所以用户永远不会看到HTTP身份验证框。 (但是,如果他们尝试直接下载文件,则不能)。
$_SERVER['PHP_AUTH_USER']
和$_SERVER['PHP_AUTH_PW']
提供了一种读取但不设置这些值的方法。
我有一个设置,其中文件不能使用直接链接下载,除非使用HTTP身份验证提供用户名/密码。从PHP设置HTTP用户名/密码
我想创建一个链接到下载的页面,访问时设置HTTP用户名和密码,所以用户永远不会看到HTTP身份验证框。 (但是,如果他们尝试直接下载文件,则不能)。
$_SERVER['PHP_AUTH_USER']
和$_SERVER['PHP_AUTH_PW']
提供了一种读取但不设置这些值的方法。
这是一个坏主意!身份验证是为确保你是谁你说你是。相反,您将其用作控制访问给定资源的方法。
如果你想强迫别人去通过网关页面,生成一个随机查询字符串和匹配时,用header()
设置HTTP元数据和fpassthru()
或sendfile()
发送内容。
您可以通过在URL中放置一个用户名和密码,以达到HTTP-auth的链接:
http://username:[email protected]/path/to/file.zip
注意,这个符号可能无法在所有浏览器都支持,或者支持它可能是用户在浏览器中可配置。您需要在对您很重要的平台上进行测试。
请注意,很有可能您的问题有更好的解决方案。
我真的不认为有更好的解决方案,除了不使用HTTP身份验证。 – gview 2012-07-26 17:34:00
这看起来像一个有前途的解决方案,但[看起来Internet Explorer不允许这样](http://support.microsoft.com/kb/834489) – 8128 2012-07-26 18:25:23
即阻止它,Firefox会引发警告。几年前,有人发现你可以创建一个像http://bankofamerica.com:[email protected]这样的网址,并且人们会点击链接相信它导致美国银行网站。 – 2012-07-26 18:34:05
为什么不移动文件如果你似乎不关心它们是否实际上受到保护? – 2012-07-26 17:24:23
等一下。所以你希望每个人都必须认证自己...但是你也希望访问你的网站的每个人都能自动进行认证?这样做有什么意义? – Palladium 2012-07-26 17:24:42
也许文件归档保存在与基于PHP的系统不同的服务器上,该系统将对其进行身份验证。 – ghoti 2012-07-26 17:29:28