2012-07-26 167 views
1

我有一个设置,其中文件不能使用直接链接下载,除非使用HTTP身份验证提供用户名/密码。从PHP设置HTTP用户名/密码

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

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

+0

为什么不移动文件如果你似乎不关心它们是否实际上受到保护? – 2012-07-26 17:24:23

+1

等一下。所以你希望每个人都必须认证自己...但是你也希望访问你的网站的每个人都能自动进行认证?这样做有什么意义? – Palladium 2012-07-26 17:24:42

+0

也许文件归档保存在与基于PHP的系统不同的服务器上,该系统将对其进行身份验证。 – ghoti 2012-07-26 17:29:28

回答

1

这是一个坏主意!身份验证是为确保你是谁你说你是。相反,您将其用作控制访问给定资源的方法。

如果你想强迫别人去通过网关页面,生成一个随机查询字符串和匹配时,用header()设置HTTP元数据和fpassthru()sendfile()发送内容。

2

您可以通过在URL中放置一个用户名和密码,以达到HTTP-auth的链接:

http://username:[email protected]/path/to/file.zip 

注意,这个符号可能无法在所有浏览器都支持,或者支持它可能是用户在浏览器中可配置。您需要在对您很重要的平台上进行测试。

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

+0

我真的不认为有更好的解决方案,除了不使用HTTP身份验证。 – gview 2012-07-26 17:34:00

+0

这看起来像一个有前途的解决方案,但[看起来Internet Explorer不允许这样](http://support.microsoft.com/kb/834489) – 8128 2012-07-26 18:25:23

+0

即阻止它,Firefox会引发警告。几年前,有人发现你可以创建一个像http://bankofamerica.com:[email protected]这样的网址,并且人们会点击链接相信它导致美国银行网站。 – 2012-07-26 18:34:05