ルート ディレクトリの外側の別のディレクトリに保持しているファイルがいくつかあり、HTML フォームを使用して、ルート ディレクトリの外側にある php ファイルに情報を投稿しようとしています。
それは可能ですか?もしそうなら、どのように?
私のウェブサイトでは、次のコードで始まるすべてのフォーム:
<form action="action" method="post">
<input type="hidden" name="i-action" value="do-whatever" />
action.php
これにより、隠しフィールドの値を使用してどのphpファイルを呼び出すかを決定するため、複数のプロキシスクリプトが不要になります。action
Ajax を使用してフォームを投稿する場合は、競合が発生する可能性があるため、隠しフィールドを呼び出さないでください。また、php 拡張子を削除するようにファイルを設定したので、HTML コードにを追加する.htaccess
必要がある場合があります。.php
action
ここにあるaction.php
:
if (!empty($_POST['i-action']))
{
$action = str_replace('.', '', $_POST['i-action']);
$action = str_replace('/', '', $action);
if (file_exists("../secret/directory/structure/$action".'.php'))
require_once("../secret/directory/structure/$action".'.php');
}
以前str_replace
は、ハッカーが別のディレクトリに移動できないようにしていました。
はい、可能です。そのディレクトリは別のサイトとしてホストする必要があり、ファイルの絶対 URL をフォーム アクションとして指定できます。
ファイルは Web からアクセスできる必要があります。
「ルートの外側」ディレクトリが DocumentRoot の外側を意味する場合、これは不可能です。
アクションをインクルードまたはディスパッチする基本的なコントローラーを DocumentRoot に配置できます。