2012-05-09 2 views
2

セッションを使用せずにセッション内のすべてのユーザーデータを設定解除する方法はありますか?私はユーザーをログアウトさせようとしており、すべてのユーザーデータを1つずつアンセットする必要があります。セッション中に設定された可能性のあるすべてのユーザーデータを追跡するのは面倒です。私はちょうどuserdataに設定されている可能性があるすべての設定を解除したい。CodeIgniter:すべてのユーザーデータを設定しますが、セッションを破棄しないでください

+0

それを試してみてくださいthis-> session-> sess_destroy(); '、これはあなたがしようとしていることを正確にしていますか? –

+0

あなたの質問によく答えるように私の答えを修正しました。 – envysea

答えて

14

これは非常に簡単です!

$this->session->unset_userdata('some_name'); 

または

$array_items = array('username' => '', 'email' => ''); 
$this->session->unset_userdata($array_items); 

私はこのことができます願っています!

編集:あなたは実際にあなたのセッション(奇妙なもののようなもの)の何かを追跡していないようです。もちろん

function unset_only() { 
    $user_data = $this->session->all_userdata(); 

    foreach ($user_data as $key => $value) { 
     if ($key != 'session_id' && $key != 'ip_address' && $key != 'user_agent' && $key != 'last_activity') { 
      $this->session->unset_userdata($key); 
     } 
    } 
} 

、あなたががデフォルトのCIセッションのセットアップを使用して前提としています。あなたは私が書いたこの関数を呼び出すことができます。 CodeIgniterのフォーラムからコピー

+0

私は誤ってそこにはいけない何かをユーザデータに残したくありません。私はあなたの解決策が働くかもしれないと思います。おそらくこれは 'unset_userdata'をオーバーライドすると良いでしょう。そうすれば、キーが渡されていなくても動作します(すべて削除されます)。思考? – StackOverflowNewbie

2

それがないすべてのユーザーのクッキーを殺すされていますが、ユーザデータは は、現在のリクエストが終了するまでセッションクラス内に残るでしょう。 セッションは次のリクエストで再初期化され、 ユーザデータはありません。基本的には、ユーザーとサーバーセッションの間でリンク を切断しますが、要求の最後まではデータはまだ のままです。

、それは問題の多くは、あなたがこれを行うことができます場合:

の$ this - >セッション - >ユーザデータ=配列();

1

私はそれを試してください。

$this->load->library('session'); 

//書き込みパラメータセッションデータ

$this->session->unset_userdata('sessiondata'); 

//セッション未設定のグループにしたいならば、正確にあなたが `$を使用したくないのはなぜ

$array_items = array('username' => '', 'email' => ''); 

$this->session->unset_userdata($array_items); 
関連する問題