PHP(バージョン5.2.10)でのセッション処理に問題があります。私は以下の機能をログイン、ログアウト、セッションの検証に使用しています。PHPでセッションを破棄する際にエラーが発生しました
login() { session_set_cookie_params(0); session_start(); session_regenerate_id(true); $_SESSION['user_id'] } validate_session() { session_set_cookie_params(0); session_start(); if (isset($_SESSION['user_id']) === FALSE) { session_destroy(); logout(); header("Location: login_page"); } } logout() { session_set_cookie_params(0); session_start(); $_SESSION = array(); setcookie(session_name(), '', time() - 3600, '/'); session_destroy(); }
すべてのページが最初にvalidate_session()関数を呼び出します。セッションが無効な場合は、ログインページにリダイレクトされます。 login()関数は、ユーザーのセッションを作成するために使用されます。 ユーザーがログアウトをクリックすると、logout()関数が呼び出されてセッションが破棄されます。
問題がある:
警告::session_destroy():ランダムにログアウト()関数は警告をスローSessionオブジェクトの破壊は、私は非常にまれにしかこの警告を取得しています
に失敗しました。 20〜30回のログアウトの呼び出しのように、私は一度それを得る。何かご意見は?
私はWindows XPマシンで開発中です。
更新:セッションはファイルシステムに保存されます。
パス:C:\ WINDOWS \ Temp
をそれはあなたがstackoverflowの上の任意の答えを受け入れてきたので、長い時間がかかったようです。.. –
うん!私はstackoverflowであまり活発ではありません。そして、いくつかのケースで私はまだ満足のいく答えを得ていません。 – Varun
こんにちはVarun、あなたはその比較の旅行equalsを使用する理由を説明できますか?通常、(!isset())で十分であれば、それはより厳しいが、isset()はブール値を返すべきであることは分かっています。本当に型を検証する必要がありますか?それはおそらくそうではありませんが、時にはそれが時折真実に戻ってくるかもしれません。 – picus