2011-04-06 181 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,因此它們的數組永遠不會被重新加載。