2016-03-01 87 views
1

我在我的服務器上有一個目錄,我想讓公衆無法訪問。 (沒有。沒有訪問php文件,圖像,任何東西。)如何使用PHP邏輯限制對服務器上目錄的訪問?

但我想允許某些用戶訪問這個基於我的PHP布爾值的限制區域。

有沒有什麼辦法可以使用PHP來確定用戶是否可以訪問一個目錄,類似於使用htaccess文件,但具有更多的自定義邏輯?

+0

使用htpasswd的HTTP認證,這鏈接是一個很好的資源http://www.htaccesstools.com/htpasswd-generator/。您將.htpasswd文件放入您要保護的目錄中,並且僅使用用戶名/密碼進行訪問。也閱讀這篇文章http://php.net/manual/en/features.http-auth.php –

+0

@MuhammedM。不幸的是,這不是我所要求的。 – geekman

+0

使用示例提供更多的deatail。 –

回答

0

最簡單的方法之一是將受限用戶重定向到您的主頁。

<?php 
    header('Location: http://www.yoursite.com') ; 
    exit; 
?> 

您可以通過在數據庫中設置布爾值來允許特定用戶訪問。

下面的解決方案將基於您的文件存儲位置工作。

$file = '/file.png'; // set your file location 
$userAccess = false; 
if (file_exists($file) && $userAccess) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename=your_file.png'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
} 

也檢查此link也。

希望它會幫助你:)

+0

但這並不限制目錄的內容。只是我把它放在這裏的文件。 – geekman

+0

@geekman:檢查我更新的答案。 –

0

所以,我終於找到了答案其他地方,它涉及到與htaccess的設置PHP文件作爲一種代理的結合 - http://simpletek.raivo.id.lv/restrict-server-files-access-based-on-php-logic/

+0

它不是一個代理或任何其簡單的mod_rewrite技術。順便說一句,解決方案根本就沒有保證,我希望你不要聽那個:傢伙建議添加一個參數到文件的URL,只是爲了讓它下載安全。糟糕的做法,非常糟糕。任何知道額外「安全」字符串的人都可以獲取您的內容。 –

相關問題