2014-10-09 46 views
0

我有一個非常簡單的頁面,用戶可以在其中登錄和下載PDF。 pdf的路徑直接從數據庫中拉出並回顯到鏈接中。關於我的腳本的一切工作很好,除了我需要阻止任何人訪問pdf文件夾。我曾嘗試添加一個htaccess文件與下面的PDF目錄:如何阻止對內部頁面以外的文件夾的訪問

Order deny,allow 
Deny from all 
Allow from localhost 

除了那幾個其他的變化,每次它只是打破了鏈接到PDF。我究竟做錯了什麼?

+0

您可能需要製作一個php腳本才能真正獲得pdf並觸發下載。迴應鏈接是不夠的,因爲用戶不是本地主機。 – Brewal 2014-10-09 16:32:27

回答

1

迴應鏈接直接獲取PDF是不夠的。 Allow from localhost表示服務器可以訪問它,但不是用戶。所以,你將不得不作出的一種「代理」的PHP腳本來使服務器觸發下載:

<?php 
$pathToThePdf = $_GET['pdf_path']; 

header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="mydownload.pdf"'); 

readfile($pathToThePdf); 

然後在你最初的PHP腳本,你回聲指向該代理:

echo '<a href="/path/to/proxy.php?pdf_path='.$thePdfPath.'">download</a>'; 

很明顯,您會希望通過檢查用戶是否登錄來爲此代理添加一些安全性。

+0

謝謝,是的,我想它是非常有意義的:p – Muskogeee 2014-10-09 16:57:24

0

如果您將localhost更改爲IP地址或服務器IP,它將起作用。

如果您要專門去http://localhost,您需要使用::1,否則使用服務器的IP地址。

order deny,allow 
deny from all 
allow from ::1