質問: joomlaモジュールのカスタム.phpファイルへの直接アクセスをajaxから利用できるようにするにはどうすればよいですか? これは、phpで初めてのことであり、joomlaでの初めてのことです。web以外のc#/ .netの重いバックグラウンドを持っています。nusoapを介してサードパーティのwebserviceとやり取りするカスタムjoomlaモジュールを作成しました。自分の開発マシンのjoomla以外のphp環境で.phpファイルを実行すると、これはすべてうまくいきます。ただし、正しく理解している場合、joomlaはindex.phpを除くすべてへのすべてのリクエストをブロックします。これは正しいですか?自分の.phpファイルへの直接アクセスを許可するにはどうすればよいですか?これは、jqueryを使用してクライアント側のjavascriptからリクエストする方法の例です。$.ajax({ url: 'myfile.php', type: 'post', data: { ... }, success: function(data, status) { .... myfile.phpは現在、物理的に/htdocs/modules/mod_mymodule/myfile.phpにあります。このファイルへの直接リクエストを許可するとセキュリティリスクが発生する可能性があることはわかっていますが、これをできるだけ早く実行する必要があり、後でセキュリティの問題に対処します。
回答: 通常、joomlaファイルへの直接アクセスを妨げる唯一のものは、ファイルの先頭の行です。defined('_jexec') or die('restricted access'); それがまだファイルの先頭にない場合は、ファイルに直接アクセスするだけで問題ありません。htaccessファイルリダイレクトには、ファイルまたはフォルダーが存在する場合にリダイレクトしない条件がすでにあります。# and the requested path and file doesn't directly match a physical file rewritecond %{request_filename} !-f # and the requested path and file doesn't directly match a physical folder rewritecond %{request_filename} !-d そうでない場合は、javascriptまたはcssファイルをロードできません。したがって、実際に行う必要があるのは、ファイルの先頭からその行を削除することだけであり、ファイルに直接アクセスできるはずです。最大の注意点は、joomlaクラスが読み込まれないため、このファイルをスタンドアロンファイルとして実行する必要があることです(既に実行しています)。私の知る限り、phpファイルに直接アクセスしても、それが意図された動作である限り、固有のセキュリティリスクはありません。 joomlaのファイルの大部分は直接アクセスされないことを想定しているため、その直接アクセスをブロックするのが最善です。あなたのケースでは、そのコードに直接アクセスすることを意図しているため、固有のリスクはありません。 postデータを受け入れ、適切にフィルタリングしないなどにより、他のセキュリティリスクが発生する可能性があります(joomlaに任せると簡単です)。ただし、ファイルが直接かどうかとは関係ありません。アクセスしたかどうか。