2013-04-12 60 views
0

我試圖拒絕對整個目錄的訪問,除非文件(它永遠可能)返回200狀態。這需要寫入我的.htaccess文件。我知道這是無效的.htaccess語法,除了deny from all部分,我只是展示了我的概念。限制對目錄的訪問,如果某些頁面返回,使用.htaccess 404

if(external-page.php returns anything but 200 header) 
{ 
    # deny the current directory 
    deny from all 
} 

外部page.php文件將運行一個腳本來檢查用戶是否具有有效憑證。如果他們這樣做,它將加載200狀態的頁面。如果他們不是有效的用戶,它將返回404狀態。

.htaccess文件位於我想要拒絕的目錄中,但是,我想檢查其狀態的腳本不在該目錄中。

在此先感謝。

更新:由於似乎有一些混淆。我在下面列出我的目錄結構:

DIRECTORY_A/ 
    DIRECTORY_B/ 
     .HTACESS 
     FILE_1.PHP 
     FILE_2.PHP 
     FILE_3.PHP 
    FILE_A.PHP 

在此基礎上的目錄結構是什麼,我試圖做的是這個...如果FILE_A.PHP返回404(或者也可以返回任何東西,只要我可以檢查它) 。然後我想拒絕所有訪問DIRECTORY_B。如果FILE_A.PHP返回200(或者真的,或者我可以檢查的任何東西),那麼我想允許訪問DIRECTORY_B

如果使用.htaccess不是最好的方法來實現這一點,那麼我打開另一種方法。然而,我被限制在FILE_1.PHPFILE_2.PHPFILE_1.PHP ......這就是爲什麼我想限制訪問整個DIRECTORY_B目錄的代碼。

+0

你想404或200 ...? –

+0

我寧願檢查200狀態,但我也可以檢查404。任何一個都沒問題。 – doitlikejustin

+0

爲什麼?這有什麼用?如果該目錄中的文件正在通過腳本進行傳輸,則您拒絕所有文件都不會幫助您執行任何操作,否則,您實際上拒絕所有用戶(包括有效用戶)的訪問。 – ahmad

回答

2

你不能做這種依賴性的.htaccess的不是一個腳本

+0

我最終不得不使用PHP – doitlikejustin

1

的常用方法做你想做的是有包含在所有的PHP文件,並檢查會話的認證PHP腳本。 當您將一個PHP文件包含在另一個PHP文件中時,它會被執行。

因此,FILE_A.php將具有驗證碼,並被FILE_1.php,FILE-2.php,FILE_3.php包含。

您不需要.htaccess,因爲您可以直接從PHP設置標題(例如禁止)。

  • 例如,頭('HTTP/1.1 403 Forbidden');

見:

只是爲了好玩,雖然你可以做到以下幾點:

  • 在FILE_A.php中執行認證並根據結果設置標題。
  • 從其他php文件中包含FILE_A.PHP。
  • 在其他文件中使用var_dump(http_response_code())來檢測由FILE_A.php設置的標題並顯示不同的輸出。
+0

這幫助我更靠近一步!仍在使用它,因爲一些文件與我正在使用的腳本衝突。 – doitlikejustin

+0

你堅持什麼? –

+0

我正在使用這個...... http://www.mysqlajaxtableeditor.com/我在課堂上放置的所有東西都會導致某種錯誤。 – doitlikejustin

相關問題