我在我的服務器上有一個目錄,我想讓公衆無法訪問。 (沒有。沒有訪問php文件,圖像,任何東西。)如何使用PHP邏輯限制對服務器上目錄的訪問?
但我想允許某些用戶訪問這個基於我的PHP布爾值的限制區域。
有沒有什麼辦法可以使用PHP來確定用戶是否可以訪問一個目錄,類似於使用htaccess文件,但具有更多的自定義邏輯?
我在我的服務器上有一個目錄,我想讓公衆無法訪問。 (沒有。沒有訪問php文件,圖像,任何東西。)如何使用PHP邏輯限制對服務器上目錄的訪問?
但我想允許某些用戶訪問這個基於我的PHP布爾值的限制區域。
有沒有什麼辦法可以使用PHP來確定用戶是否可以訪問一個目錄,類似於使用htaccess文件,但具有更多的自定義邏輯?
最簡單的方法之一是將受限用戶重定向到您的主頁。
<?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也。
希望它會幫助你:)
但這並不限制目錄的內容。只是我把它放在這裏的文件。 – geekman
@geekman:檢查我更新的答案。 –
所以,我終於找到了答案其他地方,它涉及到與htaccess的設置PHP文件作爲一種代理的結合 - http://simpletek.raivo.id.lv/restrict-server-files-access-based-on-php-logic/
它不是一個代理或任何其簡單的mod_rewrite技術。順便說一句,解決方案根本就沒有保證,我希望你不要聽那個:傢伙建議添加一個參數到文件的URL,只是爲了讓它下載安全。糟糕的做法,非常糟糕。任何知道額外「安全」字符串的人都可以獲取您的內容。 –
使用htpasswd的HTTP認證,這鏈接是一個很好的資源http://www.htaccesstools.com/htpasswd-generator/。您將.htpasswd文件放入您要保護的目錄中,並且僅使用用戶名/密碼進行訪問。也閱讀這篇文章http://php.net/manual/en/features.http-auth.php –
@MuhammedM。不幸的是,這不是我所要求的。 – geekman
使用示例提供更多的deatail。 –