我想向網站上的授權用戶提供.pdf
和.doc
文件。用戶在登錄時只能看到文件選擇頁面,但這並不妨礙未經授權的用戶在知道完整URL的情況下查看文檔。PHP來保護PDF和DOC
如何防止未經授權的用戶訪問這些文件?
我想向網站上的授權用戶提供.pdf
和.doc
文件。用戶在登錄時只能看到文件選擇頁面,但這並不妨礙未經授權的用戶在知道完整URL的情況下查看文檔。PHP來保護PDF和DOC
如何防止未經授權的用戶訪問這些文件?
的答案很簡單, @喬恩斯特林已經張貼了這個,因爲我打字,但我會解釋一下你
一個把你的文件,你的公共html目錄之外,
例如cPanel設置
user/public_html
/public_html/download.php
user/documents/
/documents/file.doc
/documents/file.pdf
@dhh發佈了一個基本download.php
php文件但是因爲你想強制下載他們的東西,你可以做的就像找到並提供正確的MIME類型這裏是對他的代碼的擴展,以1強制下載文件的最佳方式,2允許不同的文件類型
的download.php
//check users is loged in and valid for download if not redirect them out
// YOU NEED TO ADD CODE HERE FOR THAT CHECK
// array of support file types for download script and there mimetype
$mimeTypes = array(
'doc' => 'application/msword',
'pdf' => 'application/pdf',
);
// set the file here (best of using a $_GET[])
$file = "../documents/file.doc";
// gets the extension of the file to be loaded for searching array above
$ext = explode('.', $file);
$ext = end($ext);
// gets the file name to send to the browser to force download of file
$fileName = explode("/", $file);
$fileName = end($fileName);
// opens the file for reading and sends headers to browser
$fp = fopen($file,"r") ;
header("Content-Type: ".$mimeTypes[$ext]);
header('Content-Disposition: attachment; filename="'.$fileName.'"');
// reads file and send the raw code to browser
while (! feof($fp)) {
$buff = fread($fp,4096);
echo $buff;
}
// closes file after whe have finished reading it
fclose($fp);
PS這裏是MIME類型的abig列表,如果你想添加其他文件 http://www.hansenb.pdx.edu/DMKB/dict/tutorials/mime_typ.php
你可以做的是提供相當於文件的PHP代理。
將文件放在webroot之外,然後編寫一個腳本來檢查用戶是否被允許訪問。如果不是,則重定向它們,如果它們是,則設置適當的標題並輸出文件數據。
您應該將所有下載內容存儲在公共/用戶可訪問的doc根目錄(當然是在您的basedir內),並添加下載腳本以在用戶授權時發送下載。
這裏有一些如何「發送」文件下載的例子。
$file = "ireland.jpg";
$fp = fopen($file,"r") ;
header("Content-Type: image/jpeg");
while (! feof($fp)) {
$buff = fread($fp,4096);
print $buff;
}
這爲我做這份工作的支持:我置於。 pdf和一個.htaccess文件降低它在我的apache web服務器上的普通文件夾中的代碼(我將它命名爲「docs」)。
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
<Files /index.php>
Order Allow,Deny
Allow from all
</Files>
然後,我把代碼從馬丁巴克回答以上,改變了文件路徑爲「文檔/ sample.pdf」,並將其粘貼到我的根目錄下的PHP文件。而已。您現在無法訪問每個網址的文件,但是如果您運行test.php,則可以下載它。
如果您不支持網絡服務器E.G的用戶目錄,您只能訪問public_html目錄,而不是上面的目錄,因爲某些免費主機提供了這個功能 –
這正是我正在尋找的,謝謝! – Mike