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

标签 php email

有没有办法可以在 PHP 中为单个文件创建一个动态下载链接一段时间,或者下载链接在该时间后过期。在那段时间之后,下载链接会发生变化。

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

任何人都可以帮助我。

最佳答案

一种解决方案:

  • 创建一个数据库表,其中存储一个大的唯一 ID(随机)和要下载的文件的名称/位置/内容。还包括到期日期。
    id                    | filename           | expires
    ----------------------+--------------------+--------------------
    fsdhfs7dfsniuf92un3f2 | secret.doc         | 2012-03-23 23:32:32
    sdf8shdf829nf32ufn23f | secret2.doc        | 2012-03-13 23:32:33
    
  • 通过电子邮件将链接发送给您的最终用户...链接应类似于:
    http://yoursie.com/download/fsdhfs7dfsniuf92un3f2
    
  • 使用 apache 重写规则 (mod_rewrite),它将捕获漂亮的链接并将其传递给 PHP 页面:
    RewriteEngine on
    RewriteRule ^/download/([a-z0-9]{20})$  /download.php?id=$1
    
  • 在那个脚本中,download.php ,看$_GET['id'] .运行数据库查询以查找记录。检查到期日期。如果一切正常,则继续。
  • 要么使用 PHP 脚本输出正确的 header 并下载文件,要么将内部重定向发送到像 nginx 这样的前端代理,这会将下载过程卸载到 nginx 而不会将 PHP 与下载捆绑在一起。

  • 无论哪种方式,您都有一个可以发送给最终用户的安全、可过期的链接。

    小心!

    关于php - 如何在 PHP 中创建动态下载链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724584/

    相关文章:

    php - MySQLi 未找到错误

    python - AppEngine python 发送电子邮件 api 被 Gmail 电子邮件阅读器标记为垃圾邮件

    email - Gmail 中不显示 AMP

    php - 未找到 Lumen PDO 驱动程序

    php - 什么方法是散列密码的最佳方法?

    php - 从android发送数据到mysql

    javascript - 从我的网页发送电子邮件时出错

    .net - ASP.NET MVC-应该如何处理发送电子邮件?

    c# 使用 Process.Start 发送电子邮件

    php - 在php中通过电子邮件发送网页