2012-04-03 4 views
0

私はCodeIgniterの新機能ではありませんが、私はプロではありません...まだまだ慣れています。私は、セッションライブラリが非アクティブなセッションを終了したときにセッションがタイムアウトしたというメッセージをどのように表示するかについて誰かが考えているのかどうか不思議です。Codeigniterセッションタイムアウトメッセージ

私はSession.phpライブラリを拡張し、追加しようとしました:

// Is the session current? 
    if (($session['last_activity'] + $this->sess_expiration) < $this->now) 
    { 
     $this->sess_destroy(); 
     $this->set_flashdata('timeout_message', "Session Timed Out."); // <--added 
     return FALSE; 
    } 

しかし、FALSEが返され、私のコントローラは、フラッシュ・メッセージを表示するページにリダイレクトするとき、私は思う...フラッシュデータがあります消去されました。

アイデア?

+1

セッション関数を破棄してから使用しようとしています。 –

+0

Hmm。それを考えなかった。あなたは '$ this-> sess_create()'とそれに続くset_flashdataメソッドを使うことができると思いますか? – WhiskeyMike

+0

試してみてください。しかし、それはセッションを破壊する目的を破っている。 –

答えて

0

私はこれについてちょっと違う方法をとるべきだと思います。いくつかの基本的な操作を行うために他のものが継承している何らかのメインコントローラがあると仮定すると、そのメソッドのバージョンを追加することができます。ユーザーが新しいページをリクエストするたびに、上記のチェックを実行するだけです。失敗した場合は、現在のセッションを破棄したり、ログアウト方法を実行したりすることができます。新しいものを起動し、flashdataメッセージを設定して、ホームページや任意の場所にリダイレクトします。これは間違いなく新しいセッションを開始しますが、ユーザーがログアウトして貴重なセッションデータがすべて失われてしまった場合は確かに問題ありませんか?