2012-03-24 107 views
3

如果我的項目存儲在數據庫中,用戶購買後可以下載,我如何提供每個用戶不同的鏈接?創建個性化的下載鏈接

我在想,會做的正確的事情是:給他們一個鏈接,以某種方式基於他們的用戶ID例如哈希。然後,當我處理鏈接,我給他們我只是反轉哈希函數來獲取原始鏈接。這是做事的正確方法嗎?

如果這不是正確的方法,有人請指出我的方向是正確的嗎?

+1

它會暫時鏈接嗎? – safarov 2012-03-24 19:13:29

+0

沒有永久鏈接 – Biscuit128 2012-03-24 19:24:12

回答

1

散列函數並不意味着被顛倒。我建議閱讀關於lighttpd mod_secdownload實施

它給你一個受保護的鏈接,有效的一段時間。由於散列無法逆轉,因此您需要在鏈接中傳遞散列信息以及明文信息(如果可能)。例如:

http://somesite.com/download.php?hash=<md5($secretkey.$userId.$documentId)>&usrId=<$userId>&documentId=<$documentId> 

當您收到下載請求,過程中有,也比較給定的一個,如果當時你認爲這是證明它是平等的。

0

你應該在你的數據庫中存儲諸如「下載令牌」之類的東西。當用戶想要下載某個內容時,您會創建一個新的令牌(例如一個隨機數),並且如果有多個要下載的內容,可以使用它們的ID將其綁定到它們。

在URL中簡單地將令牌作爲GET變量發送。用戶下載內容後,從數據庫中刪除令牌。