我需要建立在我的网站上下载部分,但正如我的关注,我希望我的用户只能下载的文件与间接的联系,以防止他们分享我的服务器上我的文件间接路径下载文件
如:
http://mysite.com/download/12.zip
到
是存在pH的方式p这样做?
我需要建立在我的网站上下载部分,但正如我的关注,我希望我的用户只能下载的文件与间接的联系,以防止他们分享我的服务器上我的文件间接路径下载文件
如:
http://mysite.com/download/12.zip
到
是存在pH的方式p这样做?
将实际文件存储在公共html区域之外,然后在PHP脚本中简单地发送适当的头文件(Content-Type,Content-Length,Content-Disposition),最后从文件私有位置读取文件。
在允许下载以确保它们不是来自另一个页面之前,您可能需要考虑检查$ _SERVER ['HTTP_REFERER']的值。
至于隐藏只是做它的形式
yoursite.com/download.php?file=filename
然后在你的代码只是ReadFile的()在一个隐藏目录中的文件的内容 - 你可以拒绝使用的.htaccess的物理访问,如果你是真的很关心,或者你可以用a来启动目录名。这将再次停止外部访问。这并不是必须的,因为没有办法知道(或猜测)隐藏的目录名称。
作为一个备注,如果您正在进行任何数据库访问并提供大型文件供下载,您必须在readfile()之前关闭数据库连接,因为在整个持续时间内连接将被视为“打开”(即使它是十分钟的下载),在这种情况下很容易达到最大连接限制。
reko_t就在这里。
如果您的文档根目录是在/ var/www/mysite中,您可以使用像/ var/www/files这样的文件夹。这将使您的文件无法从网络访问。然后你必须在php中创建一个下载脚本。如果您需要使用相对路径($ filename = realpath(“../ files/$ fileid。$ fileext”);),则可以使用realpath生成绝对路径。
查看php.net的readfile文档中的用户注释,并查找函数readfile_chunked。我在我自己的代码中使用该函数。很有用。
您可以通过PHP将文件流式传输给最终用户。这将使它可以同时隐藏和保护您的文件。
看看php header page如果向下滚动,会有很多关于如何通过php流式传输文件的例子。他们大多数可以复制并投入使用。
一些防止盗链的方法我能想到(按照复杂度的增长顺序)。
检查$ _SERVER ['HTTP_REFERER'];如果它属于您的网站或它是空白的,请允许下载;如果它属于其他站点,则拒绝下载。
当用户访问列表并在下载脚本中阅读时,在会话中存储随机ID。
生成一个随机ID临时链接:/download-4Gaw4MWfTH6dB9UgKILSFc2UlnIPRhMv/12.zip
(我不知道你在你的例子是什么意思,但除去URL中的文件扩展名几乎不是安全措施。)
谢谢,读取public_html之外的文件的任何示例!? – 2010-03-25 09:02:33