使用apache直接为经过身份验证的用户下载文件

时间:2012-05-11 11:07:04

标签: php apache .htaccess

这是交易, 我正在销售一些文件,可以下载。

因此,只有付费文件的用户才能下载。 我想避免通过PHP脚本下载有很多原因 - 文件很大(有些约为5GB) - 如果下载粉碎,它必须重新开始。

有什么办法吗?任何策略都可以帮助我识别允许下载文件的用户,让apache完成工作(提供直接下载链接),而不是使用PHP脚本来传输文件。

任何想法?

4 个答案:

答案 0 :(得分:1)

mod auth令牌怎么样?

http://code.google.com/p/mod-auth-token/

可以是一个非常好的解决方案 - 我使用类似的策略,但使用我自己的模块。

答案 1 :(得分:0)

任何网址都可以共享,因此您必须保留文件已下载的指示,否则一位付费访问者可以发布该网址,任何人都可以下载该网址。

使用PHP,您可以在传输整个文件后设置一个标志(大致表示成功下载),因此无法再次下载该文件。

您也可以使用某种身份验证,但同样可以共享凭据。

答案 2 :(得分:0)

一个相当简单的解决方案是使用virtual函数。您将授权用户,然后将请求移至apache。那是使用php来传输文件。

答案 3 :(得分:0)

使用一些智能,您可以创建符号链接到真实文件,并在文件下载后关闭它们。

用户购买文件:您创建符号链接并将唯一的URL发送给用户。然后,您可以监视日志文件,并在下载文件时禁用符号链接。或者,如果您无法访问日志文件,您可以将用户发送到仅在用户访问时创建符号链接的PHP文件,然后在一定时间后关闭符号链接(尽管您怎么能确定那个时间是什么,我我不确定。

不是一个完美的解决方案,只是抛出一个想法。