如何在PHP中创建动态下载链接

use*_*509 2 php email

有没有办法我们可以在PHP中为一个文件创建一段动态下载链接一段时间,或者下载链接在此之后到期.在此期间之后,下载链接会更改.

实际上我有一个要求,即只能通过特定的电子邮件访问下载链接.由于其大小,我无法将该文件添加为附件.

任何人都可以帮助我.

gah*_*ooa 5

一个解决方案

  1. 创建一个数据库表,该表存储一个大的唯一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)
  2. 通过电子邮件发送给最终用户的链接...链接应该是这样的:

    http://yoursie.com/download/fsdhfs7dfsniuf92un3f2
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用apache重写规则(mod_rewrite),它将捕获漂亮的链接并将其传递给PHP页面:

    RewriteEngine on
    RewriteRule ^/download/([a-z0-9]{20})$  /download.php?id=$1
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在那个剧本中download.php,看看$_GET['id'].运行数据库查询以查找记录.检查到期日期.如果一切正常,那么继续.

  5. 使用PHP脚本输出正确的标题并下载文件,或者将内部重定向发送到前端代理,如nginx,这将下载过程卸载到nginx,而不是将PHP与下载捆绑在一起.

无论哪种方式,您都可以使用安全,可过期的链接发送给最终用户.

照顾自己!