1

我们有一个完全用 HTML 4 完成的古老网站,我的任务是想出一种方法让用户输入他们的电子邮件地址来访问/下载文件。

提交他们的电子邮件地址后,它可以将他们直接带到 pdf 文件,也可以将他们重定向到包含文件链接的“谢谢”页面。

然后,我们将能够看到电子邮件地址列表以及谁下载了什么。

我被告知需要服务器端脚本语言。老实说,我有基本的编码技能,我完全被这个任务难住了。任何帮助(请用简单的术语解释)将不胜感激。

谢谢!

4

3 回答 3

2

这取决于你想要多少保护。如果您想确保不输入电子邮件地址的人完全无法访问该文件,您可以使用 .htaccess 文件(在 Apache 中)阻止该文件。如果您之前设置的会话正常,则创建一个页面以检索要下载的文件。从你说的情况来看,我认为这没有必要。另一种选择是用一个简单的表单创建一个页面,action="somepage.php"。然后在该页面上,您将使用 $_GET 或 $_POST 检索电子邮件(也就是说,如果您使用的是 PHP),然后将其保存在数据库或文本文件或其他东西中。(您甚至可以将其发送到您的电子邮件)然后:

1)如果您使用我之前提到的保护,则将会话设置为 OK(您可以在文件开头使用 session_start() 执行此操作,然后包含 $_SESSION["gave_email"] = 'true';)。然后测试该变量以查看它是否为真。如果为真,则将用户重定向到显示该文件的 PHP 页面。(像这样的检查的适当语法可能如下所示:

(if isset($_SESSION["gave_email"] && $_SESSION["gave_email"] == true)
//you show the content, then reset the $_SESSION variable to false

2)如果您不担心安全性,那么只需将用户重定向到您想要的页面(直接到文件或包含下载链接的另一个页面)。要使用 PHP 转发,您可以使用 header('Location: page.php'),其中 page.php 是您想要的页面。整个事情看起来很简单,所以如果您对此有更具体的问题,请提出。

于 2012-07-05T18:01:14.543 回答
2

您的解决方案将分为服务器端两个部分。首先,您需要一些服务器端代码来处理用户输入,并需要一个数据库来存储从电子邮件地址到文件名的映射(尽管这可能只是服务器上的文本文件)。

服务器端脚本

当涉及到服务器端脚本语言时,您有很多选择,从疯狂流行的PHP开始,虽然大多数网络托管公司都支持它,但它充斥着糟糕的设计问题,(在我看来)应该避免所有费用。但是,它仍然完全适合您的目的。

在规模的另一端是闪电般快速的node.js,它允许您使用 JavaScript 对您的 Web 应用程序进行编程;这可以说是一种更令人愉快的方式,但托管通常更昂贵,并且面向具有大量用户群的 Web 应用程序。

两者之间还有许多其他可能的解决方案,但为了论证,我们假设您使用 PHP。

数据库

数据库的作用只是存储电子邮件地址及其各自文件下载路径之间的关系。同样,有很多不同的解决方案,有些人可能会支持或反对它们。MySQL是最不可信的解决方案之一(但不幸的是,它得到了难以置信的广泛支持并与 PHP 紧密结合),为了论证,我们将再次使用它。

这个怎么运作

您的 Web 应用程序将首先检查任何用户输入(即从 HTML 表单提交的用户电子邮件地址)。然后:

  • 如果用户没有提交任何东西,那么输出一个带有 HTML 表单的页面,它可能看起来像这样:

    <form action="thispage.php" method="post">
      <input type="text" name="email" value="Enter your address here" />
      <input type="submit" value="Get my file!" />
    </form>
    

    当用户单击提交按钮时,输入的电子邮件地址将被发送到thispage.php(或您决定调用此脚本的任何位置)。

  • 如果用户已经提交了一个电子邮件地址,(即用户点击了上面表单中的按钮),那么我们用该电子邮件地址查询数据库以找出用户的文件在哪里。关于如何做到这一点的教程一百万零一 - 这里有 PHP 的简单示例

    从数据库中检索文件路径后,您可以输出一些 HTML 作为“谢谢!” 页面,带有指向 PDF 文件的链接,或者直接使用以下代码立即重定向它们,其中$URL是文件的 URL。

    <?php
       header('Location: ' . $URL);
    ?>
    

    还有另一种方法可以做到这一点 - 如果你想保持 PDF 文件不被未经授权的人看到,你可以将它存储在服务器上的某个地方,外部世界无法访问,然后简单地将文件的内容输出到页面中. 这可能类似于以下内容,$path服务器文件系统上 PDF 文件的路径在哪里:

    <?php
       header('Content-type: application/pdf');
       echo file_get_contents($path);
    ?>
    

我希望这能让你开始。如果您需要更多指导,您已经来对地方了!

于 2012-07-05T19:06:22.900 回答
1

试试谷歌 feedburner。它允许您进行有效的下载验证当有人使用 feedburner 在您的网站上订阅时,就可以进行下载。feedburner 订阅每 10 小时刷新一次。

http://feedburner.google.com/

于 2014-05-31T11:16:20.057 回答