2012-10-22 27 views
6

私のPHP Webサイトには複数のPHPファイルがあり、その中にはユーザーインターフェイス用のものもあれば、ヘルパーファイル(データベースを介してやり取りして結果を返すファイル)もあります。今私はそのユーザーが直接URLからヘルパーファイルを実行できないようにする必要があります。phpファイルを外部から隠す

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) 

だから私はlogin.phpとhandle_login.phpが通信することができ保つ一方で、ユーザーが実行しmydomain.com/login.php閲覧けどmydomain.com/login_handle.phpを実行することができるようにotの必要がありますすることができている必要があります互いにアクセスする。おかげで、

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

+5

ストア、それらを? – eggyal

+0

phpファイルは、まだ互いに通信することができますか? –

+0

理想的には、Webrootに格納する必要があるのはルータだけです。すべてのリクエストはルータに送られなければならず、ウェブルートの外にあるコードを含む責任があります。 –

答えて

4

最初のもの:

  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の手法により行うことができる:例えば、public_html下にフォルダを作成し

  1. includes/

  2. 移動のみ、このフォルダ

  3. に含まれるべきすべてのファイルを内部.htaccessを次の行を追加します。Webルートの外に

    <FilesMatch "\.php$"> 
    Order allow, deny 
    Deny from all 
    </FilesMatch> 
    
+0

ええ、私はあなたのソリューションが好きです。ありがとう、 –

+0

しかし、これを行うために、私はすべての行に定数を書く必要がありますか?これにhtaccessのソリューションがありますか? –

+0

@ user1706482そのためには、すべてのインクルードファイルを最初にサブフォルダに移動することをお勧めします。 –

1

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

127.0.0.1このipではなく、サーバーのIPアドレスを入力する必要があります。私がしようと試みる

<Files login_handle.php> 
    Order Allow,Deny 
    Deny from all 
    Allow from 127.0.0.1 
</Files> 
+0

はい私はこれとまったく同じものが必要です。しかし、それを動作させる方法は? –

+0

public_htmlフォルダに移動し、.htaccessファイルを開くか、存在しない場合は作成します。 –

+0

ありがとうございます、あなたの答えはまさに私が必要なものです。しかし、これを行うと、どちらのタイプのアクセスでも禁じられたエラーが表示されます。つまり、ログインできない禁じられたページが現れます。 –

関連する問題