我有一個非常簡單的頁面,用戶可以在其中登錄和下載PDF。 pdf的路徑直接從數據庫中拉出並回顯到鏈接中。關於我的腳本的一切工作很好,除了我需要阻止任何人訪問pdf文件夾。我曾嘗試添加一個htaccess文件與下面的PDF目錄:如何阻止對內部頁面以外的文件夾的訪問
Order deny,allow
Deny from all
Allow from localhost
除了那幾個其他的變化,每次它只是打破了鏈接到PDF。我究竟做錯了什麼?
我有一個非常簡單的頁面,用戶可以在其中登錄和下載PDF。 pdf的路徑直接從數據庫中拉出並回顯到鏈接中。關於我的腳本的一切工作很好,除了我需要阻止任何人訪問pdf文件夾。我曾嘗試添加一個htaccess文件與下面的PDF目錄:如何阻止對內部頁面以外的文件夾的訪問
Order deny,allow
Deny from all
Allow from localhost
除了那幾個其他的變化,每次它只是打破了鏈接到PDF。我究竟做錯了什麼?
迴應鏈接直接獲取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>';
很明顯,您會希望通過檢查用戶是否登錄來爲此代理添加一些安全性。
謝謝,是的,我想它是非常有意義的:p – Muskogeee 2014-10-09 16:57:24
如果您將localhost
更改爲IP地址或服務器IP,它將起作用。
如果您要專門去http://localhost
,您需要使用::1
,否則使用服務器的IP地址。
order deny,allow
deny from all
allow from ::1
您可能需要製作一個php腳本才能真正獲得pdf並觸發下載。迴應鏈接是不夠的,因爲用戶不是本地主機。 – Brewal 2014-10-09 16:32:27