2011-04-06 189 views
0

我正在寻找一个简单的PHP微型网站,允许下载我的乐队曲目之一以换取电子邮件地址。我知道我可以使用Bandcamp,但我想这样做我自己;)php隐藏下载链接

我发现从带一个微型我喜欢不正是我想要,所以我想它拆了。该网站是http://threetrappedtigers.heroku.com。这个网站基本上让你输入你的电子邮件地址,然后它必须放入数据库(除非它发现数据库中的电子邮件地址匹配)。

然后,您可以查看下载按钮,下载文件没有透露该文件的源URL。该按钮的href"download/",导致我认为下载目录中有一个index.php,它必须要求某种类型的会话ID(可能在提交电子邮件时设置)以阻止直接与其链接的人员。然而,该文件也做了一些我不知道的工作,以掩盖链接。

另一方面,我不明白的是,在输入电子邮件的页面上有一个隐藏的输入,提交电子邮件地址时提交一个随机authenticity_token。我无法弄清楚为什么这也是必要的。

道歉过这种可怕的具体问题,但我一直在试图所有早上上班出去,不能完全围绕让我的头。

感谢,

丰富

回答

1

你可以做的是这样的:

  1. 用户输入一个电子邮件地址
  2. 确认(或不取决于你的意愿),通过发送包含令牌的链接的电子邮件。即:http://myawesomband.com/downloadtrack.php?token=asd#% $ dhj123
  3. downloadtrack.php验证令牌并与file_get_contents()加载样品跟踪,并提供它作为一个下载(请参阅在php.net网站特定的头文件)

的优点是用户不知道文件的位置(最好是将样本轨道放在webroot之外)

[编辑] 对于隐藏的输入字段标记:这可能用于混淆机器人和其他脚本只会大量发送“电子邮件”字段,如果令牌未发送且与第$_SESSION['token']个值不符没有处理电子请求。这是有效的,因为执行这些类型攻击的脚本通常不接受cookie,因此它们的数组永远不会被重新加载。