0

ファイル (どこにあるとしても) が 200 ステータスを返さない限り、ディレクトリ全体へのアクセスを拒否しようとしています。これは、.htaccess ファイルに書き込む必要があります。一部を除いて、これは有効な .htaccess 構文ではないことを認識していますdeny from all。私は自分の概念を示しているだけです。

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

external-page.phpは、ユーザーが有効な認証情報を持っているかどうかをチェックするスクリプトを実行します。その場合、ページは 200 ステータスでロードされます。有効なユーザーでない場合は、404 ステータスが返されます。

.htaccess ファイルは拒否したいディレクトリにありますが、ステータスを確認したいスクリプトがそのディレクトリにありません。

前もって感謝します。

更新:混乱があるようです。ディレクトリ構造を以下にリストしました。

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

このディレクトリ構造に基づいて、私がやろうとしているのはこれです... FILE_A.PHP404 を返す場合 (または、確認できる限り、何でも返すことができます)。次に、 へのすべてのアクセスを拒否しますDIRECTORY_B。200(またはtrue、または私が確認できるもの)を返す場合FILE_A.PHP、アクセスを許可したいDIRECTORY_B

.htaccess を使用することがこれを達成する最善の方法ではない場合は、別の方法を使用できます。ただし、コードをFILE_1.PHPand FILE_2.PHPand ... に入れることは制限されているため、ディレクトリFILE_1.PHP全体へのアクセスを制限したいと考えています。DIRECTORY_B

4

2 に答える 2

1

あなたが望むことを行う通常の方法は、すべての PHP ファイルに含まれている認証 php スクリプトを用意し、セッションをチェックすることです。ある PHP ファイルを別のファイルに含めると、それが実行されます。

したがって、FILE_A.php には認証コードがあり、FILE_1.php、FILE-2.php、FILE_3.php に含まれます。

PHP から直接ヘッダー (禁止など) を設定できるため、.htaccess は必要ありません。

  • 例: header('HTTP/1.1 403 Forbidden');

見る:

楽しみのために、次のことができます:

  • FILE_A.php で認証を行い、結果に応じてヘッダーを設定します。
  • 他の php ファイルから FILE_A.PHP をインクルードします。
  • 他のファイルで var_dump(http_response_code()) を使用して、FILE_A.php によって設定されたヘッダーを検出し、別の出力を表示します。
于 2013-04-12T00:28:11.860 に答える