除非用户填写表格,否则请勿下载媒体

时间:2012-05-29 13:17:51

标签: php

我正在为一个乐队制作一个网站,他们正在免费赠送他们的EP,但他们想要它,所以用户必须在下载之前输入他们的电子邮件地址......如何在PHP中完成?

2 个答案:

答案 0 :(得分:2)

可下载文件应放在Web用户无法访问的范围内,但在PHP脚本范围内。然后,一旦用户填写完表单,您就可以通过使用“fopen”在本地打开来强制下载文件内容。

更新(添加示例代码):

假设文件是​​“txt.txt”,可能在您的脚本范围内。您将打开它,阅读然后在调用标题之后放入内容并告诉它它是一个附件(强制下载)

$done  = true;
        if($done == true){

            $filename = "txt.txt";
            $conn = fopen($filename,"r");

            $contents = fread($conn, filesize($filename));
            fclose($conn);
            header('Content-type: text/plain');         
            header('Content-Disposition: attachment; filename="downloaded.txt"');
            echo $contents;



        }

答案 1 :(得分:0)

如果您以某种方式存储电子邮件,则只需在提交电子邮件时设置$_SESSION值,并在编写页面时,如果已设置$_SESSION值的部分,则提供媒体链接。

开始会话&设置值:

session_start();
$_SERVER['hasEmail']=true;

在页面中:

session_start();
if ($_SERVER['hasEmail']) {
    //Provide link
}

然后,您还可以使用媒体链接将您带到使用fopen()或类似内容的PHP脚本,从文件系统上的其他位置获取文件,用户无法访问,例如.htaccess阻止下的文件,它只提供媒体是$_SESSION值设置。