私はラインを持っています
xmlhttp.open("GET","file.php?id=4",true);
file.phpは同じフォルダーではなく、一般に公開されていない別のプライベートフォルダーにあるため、これは機能しません。
open関数を使用して別のフォルダーにあるファイルを開く方法はありますか?
私はラインを持っています
xmlhttp.open("GET","file.php?id=4",true);
file.phpは同じフォルダーではなく、一般に公開されていない別のプライベートフォルダーにあるため、これは機能しません。
open関数を使用して別のフォルダーにあるファイルを開く方法はありますか?
それは基本的に不可能です。
HTTPリクエストを送信する場合は、HTTPを介して一般に公開されている必要があります。
公開ウェブスペース内からのみファイルをリクエストできます。パブリックWebスペース外のファイルにアクセスするには、プライベートフォルダーからコンテンツをフェッチできるパブリックWebスペース内のスクリプトが必要です。
<?php // file.php in the public webspace
$allowedFiles = array(
1 => '/path/to/private/space/on/server/file1.txt',
2 => '/path/to/private/space/on/server/file2.txt',
3 => '/path/to/private/space/on/server/file3.txt',
4 => '/path/to/private/space/on/server/file4.txt',
);
$id = filter_var($_GET['id'], FILTER_VALIDATE_INT);
if (isset($allowedFiles[$id])) {
readfile($allowedFiles[$id]);
}
今あなたがするとき
xmlhttp.open("GET","file.php?id=4",true);
スクリプトはのコンテンツを送信します
/path/to/private/space/on/server/file4.txt
クライアントに。
readfile
ファイルの内容は実行されないことに注意してください。PHPスクリプトの結果を送信する必要がある場合は、のinclude
代わりにを使用する必要がありreadfile
ます。詳細については、マニュアルを参照してください。
上記のアプローチは、現在使用されているほとんどのフレームワークと実質的に同じです。アプリケーションへのゲートウェイとして機能する単一のスクリプトがあります(フロントコントローラーパターンのようなものです)。このスクリプトは、アプリケーションへのすべての要求(mod_rewriteを考えてください)を受け入れ、公的にアクセス可能な唯一のPHPファイルです。アプリケーションをブートストラップし、URL(または適切と思われるもの)から、プライベートスペース内のどのファイル(通常はMVCを使用する場合はコントローラー)をインスタンス化して呼び出すかを決定します。