【问题标题】:HTML 4 Website - User submits email address to access/download a fileHTML 4 网站 - 用户提交电子邮件地址以访问/下载文件
【发布时间】:2012-07-06 03:46:03
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

  • 如果可以选择现成的解决方案,请尝试研究 PHP 中的开源文件共享软件

标签: php email scripting html4


【解决方案1】:

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

服务器端脚本

当谈到服务器端脚本语言时,您有很多选择,从疯狂流行的 PHP,虽然得到大多数网络托管公司的支持,但充斥着糟糕的设计问题,并且(在我看来) 应不惜一切代价避免。但是,它仍然完全足以满足您的目的。

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

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

数据库

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

工作原理

您的网络应用程序将首先检查任何用户输入(即从 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 here 的简单示例。

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

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

    您还可以选择其他方法来执行此操作 - 如果您想让 PDF 文件隐藏在未经授权的人眼中,您可以将其存储在服务器上的某个位置,外部世界无法访问,然后简单地输出 内容 的文件进入页面。这可能类似于以下内容,其中$path 是服务器文件系统上 PDF 文件的路径:

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

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

【讨论】:

    【解决方案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 是您想要的页面。整个事情看起来很简单,所以如果您对此有更具体的问题,请提出。

    【讨论】:

      【解决方案3】:

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

      http://feedburner.google.com/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多