duanmei2459 2012-03-15 17:02
浏览 221
已采纳

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

Is there a way we can create a dynamic download link in PHP for a single file for some period of time or the download link expires after that time. After that period the download link changes.

Actually I have a requirement where the download link should be accessible only through a particular email. I can't add that file as an attachment because of its size.

Can any one help me in this.

  • 写回答

5条回答 默认 最新

  • dongqing5575 2012-03-15 17:09
    关注

    One solution:

    1. Create a Database table which stores a large unique ID (random), and the name/location/content of the file to download. Also include an expire date.

      id                    | filename           | expires
      ----------------------+--------------------+--------------------
      fsdhfs7dfsniuf92un3f2 | secret.doc         | 2012-03-23 23:32:32
      sdf8shdf829nf32ufn23f | secret2.doc        | 2012-03-13 23:32:33
      
    2. Email a link to your end user... The link should be something like:

      http://yoursie.com/download/fsdhfs7dfsniuf92un3f2
      
    3. Use an apache rewrite rule (mod_rewrite) which will capture the nice looking link and pass it to a PHP page:

      RewriteEngine on
      RewriteRule ^/download/([a-z0-9]{20})$  /download.php?id=$1
      
    4. In that script, download.php, look at $_GET['id']. Run a database query to look up the record. Check the expiration date. If all is OK, then proceed.

    5. Either use the PHP script to output the correct headers and download the file, or send an internal redirect to a front-end proxy like nginx, which will offload the download process to nginx and not tie up PHP with the download.

    Either way, you have a secure, expireable link that you can send to your end users.

    Take care!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况