プロジェクトに Joomla を使用していますが、データを入力するためにいくつかの Ajax リクエストが発生しています。PHP ビューで Joomla セッション トークンを生成し、これを PHP ページでもある Ajax 要求エンドポイントの URL に追加し、データを返す前にトークンを検証します。
このようなもの:
// view.html.php
$script = "var ajaxurl = 'index.php?task=ajaxFunction&".JFactory::getSession()->getFormToken()."=1';";
$document->addScriptDeclaration($script);
// ajax.js
var request = new Request.JSON({
url: ajaxurl,
onException: function(headerName, value) {
// etc.
}
});
// controller
public function ajaxfunction()
{
JRequest::checkToken('get') or die( 'Invalid Token!' );
// do other stuff
}
これは、キャッシュが有効になるまで問題なく機能します。
問題は、view.html.php
Joomla が内部キャッシュを使用する場合、ファイルが既に設定されたトークンでキャッシュされることです。そのため、ブラウザーがページを要求するたびに、キャッシュされたトークンを一緒にプルします。つまり、コントローラーは無効なトークン エラーを返します。
以前の Joomla ビルドでは、完全にキャッシングが機能しなかったことを私は知っています。Joomlaキャッシュを無効にする以外に、Joomla 2.5以降でこれを機能させる方法はありますか? 単一のビューをキャッシュから除外する方法が見つかりません。