我想弄清楚如何在PHP中保護數字下載。只需要一些大方向即可開始我的研究。我似乎無法找到有用的東西。PHP - 保護數字下載
我想讓我的用戶可以下載文件,但不希望他們能夠直接訪問下載文件夾。另外,我希望下載鏈接僅在設定的時間段內或單次下載時可用。
有人能指出我的方向嗎?
我想弄清楚如何在PHP中保護數字下載。只需要一些大方向即可開始我的研究。我似乎無法找到有用的東西。PHP - 保護數字下載
我想讓我的用戶可以下載文件,但不希望他們能夠直接訪問下載文件夾。另外,我希望下載鏈接僅在設定的時間段內或單次下載時可用。
有人能指出我的方向嗎?
最好的辦法是你的支票到國防部後委派下載同治爲Apache
x_sendfile
https://tn123.org/mod_xsendfile/
用法:
<?php
...
if ($user->isLoggedIn())
{
header("X-Sendfile: $path_to_somefile");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$somefile\"");
exit;
}
?>
<h1>Permission denied</h1>
<p>Login first!</p>
基本上當你發送的報頭X-該模塊的Sendfile攔截文件併爲您管理下載(只要您想在虛擬主機外部找到該文件就可以找到該文件)。
否則你可以實現一個簡單的文件的download.php的登錄檢查後readfile
獲取文件的ID和打印內容
值得注意的是'X-Sendfile'支持在nginx和lighttpd(這是它的起源地)中也是可用的,並且如果它可用的話,它是*最好的選擇。 – Charles 2011-03-23 22:28:20
只是一些例子:您可以將Web服務器的文檔之外的文件根或在一個目錄中,該目錄被一個帶有「全部拒絕」規則的.htaccess文件保護;然後您通過自定義PHP函數傳遞文件,該函數設置正確的標頭(mime-type,文件大小等)並返回文件。
您可以創建基於MD5或SHA-1唯一的ID的鏈接哈希 - 一個mod_rewrite的規則點ID到PHP文件,你查找的ID數據庫,做你的時間檢查,像
example.com/downloads/73637/a8d157edafc60776d80b6141c877bc6b
改寫爲
example.com/dl.php?id=a8d157edafc60776d80b6141c877bc6b&file=73637
這裏有你想要做的事情的一個例子nginx的和PHP: http://wiki.nginx.org/HttpSecureLinkModule
「Secure Download Links「,一個PHP腳本可以用來隱藏下載URL或重命名下載文件,它可以選擇存儲下面的web根目錄以及存儲在webroot上面的絕對http url的文件。
該數據庫是你的朋友。 – BoltClock 2011-03-23 22:18:40
''與* analog * downloads?' '@usniorg相反,您能告訴我們您使用的是什麼Web服務器軟件嗎?它會影響答案。 –
Charles
2011-03-23 22:21:08
將文件存儲在網頁根目錄下,通過腳本服務 – 2011-03-23 22:21:25