allow_url_include
1 つの URL からのインクルードを許可する方法はありますか。多分HtaccessまたはPHPで?
2 に答える
いいえ。URL のコンテンツを取得するには、 を使用しますfile_get_contents()
。次に、結果を待機中のブラウザーに送り返すには、単にecho()
.
$contents = file_get_contents('http://www.example.com/');
echo( $contents );
上記では、config を設定する必要がありますallow_url_fopen=1
(これはデフォルトで既に設定されています)。
上で示したアプローチの代わりにを使用する場合include
、大きな違いが 1 つあります。フェッチされたドキュメント内で見つかった PHP コードinclude
も実行します。一般に、これは、含まれるドキュメントの内容を 100% コントロールできることがわかっていない限り、許可するのは非常に危険です。
つまり、 とまったく同じように機能するコードがinclude
必要な場合は、次のようにすることができます (単一の URL を取得するだけで、を有効にする必要がないallow_url_include
ため、より安全です)。
$contents = file_get_contents('http://www.example.com/');
eval('?>'.$contents);
これを選択する場合は、リモート URL の完全なコンテンツを制御していることを確認してください。他の誰かがそのファイルを制御すると、サーバー上で任意のコードを実行できるようになります。それが起こらないようにしてください。
なぜそれが必要なのか、コードを制御できます。インクルード中に 1 つの URL を使用するだけです。allow_url_include を使用する以外に、非常に危険です。それでも使いたい場合は、この方法で行うことができます。
カスタム関数を作る(ラフコード)
function url_include($url){
//now check if $url is the one you want to be included
if($url=="http://www.mysite.com/file.php"){
include($url);
}else{
//show error or something.
}
}
これurl_include("http://www.mysite.com/file.php");
をページで使用して、URL を含めます。
お役に立てれば