session_regenerate_id()
開発中のアプリケーションでPHPを機能させるのに問題があります。アプリケーションは(緩い)自作のMVCフレームワークを使用し、ファイルを使用してすべてのリクエストをリダイレクトします。.htaccess
index.php
ログアウト時にセッション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になります...
どうすればsを機能させることができるのか疑問に思っていますession_regenerate_id()
。変更されたIDを「コミット」していないようです。使用してみましsession_commit()
たが、どのように機能するのかよくわかりません。セッションを破棄しようとするとエラーが発生しました。
PHP5.3.10およびapache2.2.21