有没有办法我们可以在PHP中为一个文件创建一段动态下载链接一段时间,或者下载链接在此之后到期.在此期间之后,下载链接会更改.
实际上我有一个要求,即只能通过特定的电子邮件访问下载链接.由于其大小,我无法将该文件添加为附件.
任何人都可以帮助我.
一个解决方案
创建一个数据库表,该表存储一个大的唯一ID(随机),以及要下载的文件的名称/位置/内容.还包括过期日期.
id | filename | expires
----------------------+--------------------+--------------------
fsdhfs7dfsniuf92un3f2 | secret.doc | 2012-03-23 23:32:32
sdf8shdf829nf32ufn23f | secret2.doc | 2012-03-13 23:32:33
Run Code Online (Sandbox Code Playgroud)通过电子邮件发送给最终用户的链接...链接应该是这样的:
http://yoursie.com/download/fsdhfs7dfsniuf92un3f2
Run Code Online (Sandbox Code Playgroud)使用apache重写规则(mod_rewrite),它将捕获漂亮的链接并将其传递给PHP页面:
RewriteEngine on
RewriteRule ^/download/([a-z0-9]{20})$ /download.php?id=$1
Run Code Online (Sandbox Code Playgroud)在那个剧本中download.php,看看$_GET['id'].运行数据库查询以查找记录.检查到期日期.如果一切正常,那么继续.
使用PHP脚本输出正确的标题并下载文件,或者将内部重定向发送到前端代理,如nginx,这将下载过程卸载到nginx,而不是将PHP与下载捆绑在一起.
无论哪种方式,您都可以使用安全,可过期的链接发送给最终用户.
照顾自己!