3

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

4

2 回答 2

2

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

更新(添加示例代码):

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

$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;



        }
于 2012-05-29T13:21:38.460 回答
0

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

要开始会话并设置值:

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

在页面中:

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

然后,您还可以让媒体链接将您带到一个 PHP 脚本,该脚本使用fopen()或类似的方式从用户无法触及的文件系统上的另一个位置获取文件,例如 .htaccess 阻塞下的位置,它只会提供media 是$_SESSION设置的值。

于 2012-05-29T13:22:03.807 回答