7

私のphpウェブサイトには複数のphpファイルがあり、そのうちのいくつかはユーザーインターフェイス用で、いくつかはヘルパーファイルです(データベースを介して通信し、結果を返すファイル)。ここで、ユーザーが直接の URL からヘルパー ファイルを実行できないようにする必要があります。

e.g. mydomain.com/login.php   ---------- (Interface file, must be accessible to user)
     mydomain.com/login_handle.php   ----(Healper file, must not be accessible to user)

したがって、ユーザーは mydomain.com/login.php を実行および参照できますが、mydomain.com/login_handle.php を実行できる必要はありませんが、login.php と handle_login.php は通信を維持し、相互にアクセスできます。ありがとう、

編集:申し訳ありませんが、私は共有ホスティングを使用しており、 public_html 以外のフォルダーはありません。

4

2 に答える 2

7

私が最初に試みること:

  1. 含まれるファイルをドキュメント ルートの外に移動する

  2. 含まれているファイルを別のフォルダー内に移動し、 を使用して保護します.htaccess。または、インクルード ファイルの名前を末尾に変更し、.incそれに基づいてルールを作成します。

  3. インクルードされたファイルが何も出力しないことを確認してください。これは実際には安全ではありませんが、出力を生成せずに関数やクラス定義などのみがファイルに含まれている場合、空のページが表示されるだけです。

これに対するハックなアプローチは、定数を使用して実現できます。

index.php

<?php

define('MY_CONSTANT', '123');

include('helper.php');

helper.php

<?php

if (!defined('MY_CONSTANT')) { exit; }

// we were called from another file
// proceed

編集

上記の2番目のアプローチは、次の方法で実行できます。

  1. public_htmlの下にフォルダーを作成します。includes/

  2. このフォルダにのみ含める必要があるすべてのファイルを移動します

  3. .htaccess内部に次を追加します。

    <FilesMatch "\.php$">
    Order allow, deny
    Deny from all
    </FilesMatch>
    
于 2012-10-23T01:42:12.247 に答える
1

.htaccess を使用してみてください。

この IP を 127.0.0.1 にする代わりに、サーバーの IP アドレスを入力する必要があります。

<Files login_handle.php>
    Order Allow,Deny
    Deny from all
    Allow from 127.0.0.1
</Files>
于 2012-10-23T00:08:26.207 に答える