web-dev-qa-db-ja.com

checkToken()を使用してフォームの投稿を保護する

Jooma FrameworkFramework App をテンプレートとして使用してWebアプリを構築しています。 (この投稿 で説明されているようにgetFormToken()が機能していて、フォームでトークンを送信していますが、checkToken()が機能しません。これは、これまでにセッションをセットアップしてトークンを取得するためのコードです。

$session = Session::getInstance('none', $options);
$session->initialise($this->app->input);
$session->start();
$this->app->setSession($session);
$token = $this->app->getFormToken();

$ tokenは、ページが読み込まれるたびに新しい値になるため、checkToken()が失敗してアプリを終了するという問題があります。次のページのロードが開始されると、session.tokenが$ _SESSION変数に正しく設定されていることがわかりますが、getInstanceを呼び出してセッションを取得すると、最初にセッションをクリアするsession_unset()およびsession_destroy()が呼び出されます。トークン。

では、毎回セッションをクリアせずにセッションにアクセスするにはどうすればよいですか?以前のページの読み込みで作成されたフォームトークンを確認する別の方法はありますか?

どうもありがとう、

6
Joe P

私はコードを推測します

$session = Session::getInstance('none', $options);

新しいインスタンスを作成します。

しかし、必要なのは、アクティブなセッションを取得することです。使用してみてください

$session =& JFactory::getSession();

私は試していませんが知っています。結果を教えてください。

ありがとう

1