2

私の他の質問を参照して:モジュラーサイトでのコンテキストアウェアAJAX呼び出し、便利な方法でAJAXプロキシを設定することは可能ですか?

サーバーサイドのPHP命令でJavaScriptコードを汚染せずに、動的urlを使用してAJAXリクエストを作成し、モジュラーApache / PHP / MySQLサイト(私が作成した大まかなCMS)でajaxphpファイルの正しいパスを計算したいと思います。つまり、このサイトには、CSS、JS、PHPを含む独自のフォルダー構造を持つプラグインとコンポーネントがあり、フォルダーを動的に取得する関数があります。私はそれを望みます:

$("#mydiv").load(siteRoot + "/ajax.php?plugin=datagrid&
action=myaction&... other params...");

代わりに(PHPによってサーバー側で計算されたURLを使用して)呼び出します:

{siteRoot}/components/datagrid/ajax/myaction.php?... other params ...

(明らかに、インジェクション、CSRF、その他のハッキングに対するすべての可能なチェックがあります)。

4

2 に答える 2

1

/ajax/get.phpファイルは次のようになります。

$plugin = $_GET['plugin'];
$action = $_GET['action'];
$get = array();
foreach ($_GET as $k=>$v) {
    if($k!='plugin' && $k!='action') {
        $get[] = "{$k}={$v}";
    }
}
$url = 'siteRoot/components/'.$plugin.'/ajax/'.$action.'.php?'.implode('&', $get);

header("Location: {$url}");

もちろん、上記のコードにいくつかのセキュリティチェックを追加する必要があります

編集:欠点は、POSTリクエストの送信には機能しないことです

于 2012-08-03T09:21:01.097 に答える
0

代わりに、最初のページのリクエストでjavascript変数を宣言し、それを使用して、SITE_URLにphpで計算されたURLが含まれているとします。

 var siteRoot = '<?php echo SITE_ROOT?>' // or some thing else 

したがって、この行の後に含まれる.jsスクリプトには、siteRoot変数が定義されています。

于 2012-08-03T09:30:19.950 に答える