2013-02-03 139 views
3

我想要實現的是爲用戶創建一次性視頻鏈接。他們觀看鏈接過期的視頻可以說鏈接在其創建後1小時後到期。php動態視頻網址

問題是如何去做。我可以使用mod_rewrite動態值傳遞給PHP和SQL

因此,可以說

mysite.ltd/get_video/Jn12lM2NMZ21oMW312/11111111/The-Amazing-Spider-Man.mp4 

分析:get_videoget_video.phpJn12lM2NMZ21oMW312是一個臨時令牌和11111111是一個時間戳,The-Amazing-Spider-Man.mp4是文件名。

根據我的結論,在視頻頁面訪問時會生成令牌+時間戳,並將其插入到SQL中,如果用戶共享視頻鏈接,其他人將無法訪問它,因爲它會在get_video比較的令牌驗證上失敗散列當前用戶的IP和SQL中的散列標記。

這是我對如何做到這一點的看法,但我想知道是否有人得到了更好的解決方案。

回答

1

你甚至不需要保存令牌和時間戳。你想要的是用戶的IP地址的哈希,時間戳和一些不錯的長期祕密鹽(最好是唯一爲每個用戶生成):

$token = somehash($ip_address . $timestamp . $secret); 

$url = 'http://xxx/' . $token . '/' . $timestamp . '/filename'; 

一旦用戶訪問您重放與用戶的數據散列的網址。如果相等並且請求沒有過期,則服務視頻。

+0

哦,沒有想到 –

0

你用權標得到了那部分權利。令牌應僅對當前會話有效,或者如果此鏈接用於同一頁面上的流式視頻,則只需爲每個請求生成令牌。爲了生成安全的令牌,你可以使用一些祕密的鹽變量,我喜歡將它存儲在你的config.php中,基本上任何框架都會爲你生成salt ..

通常你在數據庫中存儲帶ID的視頻/文件名。所以構建文件路徑,驗證令牌,你可以強制下載帶有頭文件和readfile()結帳第一條評論,很多代碼在那裏。這樣,沒有人會知道你的文件的位置。

+0

啊哈,所以我在正確的軌道上,謝謝。 –