【问题标题】:php hidden download linkphp隐藏下载链接
【发布时间】:2011-04-06 11:16:05
【问题描述】:

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

我从我喜欢的一个乐队中找到了一个微型网站,它完全符合我的要求,所以我试着把它挑选出来。该网站是http://threetrappedtigers.heroku.com。该网站基本上让您输入您的电子邮件地址,然后它必须将其放入数据库中(除非它在数据库中找到与该电子邮件地址匹配的)。

然后您可以查看下载按钮并下载文件,而无需显示文件的源 URL。该按钮的href"download/" 导致我假设下载目录中有一个index.php,它必须需要某种会话ID(大概是在提交您的电子邮件时设置)以阻止人们直接链接到它。但是,该文件还做了一些我不知道的工作以掩盖链接。

我不明白的另一个方面是,在输入电子邮件的页面上有一个隐藏的输入,在提交电子邮件地址时会提交一个随机的authenticity_token。我也不太明白为什么需要这样做。

对于这个非常具体的问题,我深表歉意,但我整个上午都在努力解决这个问题,但无法完全理解。

谢谢,

丰富

【问题讨论】:

    标签: php url hyperlink download hide


    【解决方案1】:

    你可以这样做:

    1. 用户输入电子邮件地址
    2. 通过发送包含令牌链接的电子邮件进行验证(或不验证,取决于您的意愿)。即:http://myawesomband.com/downloadtrack.php?token=asd#%$dhj123
    3. downloadtrack.php 验证令牌并使用file_get_contents() 加载示例轨道并将其作为下载提供(请参阅 php.net 站点上的特定标题)

    优点是用户不知道文件的位置(最好将示例轨道放在 webroot 之外。

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

    【讨论】:

      【解决方案2】:

      你可以看看这个,因为它做你想做的事,要么使用蛋糕,要么采取一些想法

      http://book.cakephp.org/view/1094/Media-Views

      https://github.com/cakephp/cakephp/blob/master/cake/libs/view/media.php

      你可以在 render() 函数中看到它主要是关于设置正确的标题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-14
        相关资源
        最近更新 更多