開発中のアプリケーションでPHPのsession_regenerate_id()
が動作するのに問題があります。アプリケーションは(緩い)自作のMVCフレームワークを使用し、はindex.php
ファイルを通して.htaccess
を使用してすべての要求をリダイレクトします。PHPログイン/アウト時にセッションIDを再生成しない
ログアウト時にセッションIDを再生成しようとしていますが、正しく機能していません。ここで
は私のログアウトコントローラからいくつかのコードです - 期限切れの変数は、セッションタイムアウトのためのチェックです。また
session_regenerate_id(true);
if(isset($_SESSION['expired']))
{
$this->registry->template->expired = true;
}
session_unset();
session_destroy();
関連は、index.phpファイルの先頭からのコードです:
session_cache_expire(20);
session_start();
session_name("TMU");
//session_regenerate_id();
各ページの下部にsession_id()
という結果が表示され、再生されたかどうかをテストするために含まれている内容を確認します。
ログアウトしてもセッションIDは変更されません。もう一度ログインすると(別のアカウントでも)、セッションIDは同じになります。
index.phpファイルの4行目がコメントアウトされています。その行のコメントを外すと、すべてのページにIDが再生成されているように見えます。しかし、私が再びラインをコメントアウトすると、セッションIDはインデックスファイル内の行のコメントを外す前の元のIDになります。
私はどのようにしてession_regenerate_id()
を得ることができますか?変更されたIDを「コミット」していないようです。私はsession_commit()
を使ってみましたが、どのように完全に動作するのか分かりませんし、セッションを破棄しようとするとエラーになってしまいました。
PHP 5.3.10とApache 2.2.21