[Codeigniter-users] NG Session

Back to archive index

mocapapa mocap****@pugpu*****
2008年 8月 21日 (木) 18:27:31 JST


微妙に違う件ですが。。。

On Thu, 21 Aug 2008 12:12:44 +0900
"Takeshi Amano" <p****@takes*****> wrote:

> 天野です
> 
> > ちょっと気になったんですが、
> > セッションが切れた後にセッション変数がとれるというのはどうなんでしょう?
> 
> まぁそうなんんですが、CIのデフォルトではcookieに入れているので同じ
> セッションの挙動のはずですよね?

Simpleloginを改造する過程で気づきましたが、CIのデフォルトのsessionはバグ
があるようです(?)

あるいはSimpeloginの実装の方が間違っているのかもしれませんが、
Simpleloginのloginメソッドにおいて、すでにログイン中かをチェックしていま
す。

        //Check if already logged in
        if($this->CI->session->userdata('username') == $user) {
            //User is already logged in.
            return false;
        }

ところが、サンプルプログラムを作成してみるとログアウトしてもログイン中と
いう動作をするため、調べると実際には上記のuserdataに値(username)が残って
います。そこで、Simpleloginのログアウト処理を調べると、

    function logout() {
        //Put here for PHP 4 users
        $this->CI =& get_instance();        
        //Destroy session
        $this->CI->session->sess_destroy();
    }

このようにsess_destroyを呼んでおり、CIのsess_destroyメソッドを調べるとクッ
キーのセットのみということがわかりました。

従って、CIではなくそれを呼び出すSimpleloginのlogouメソッドに

if (isset($CI->session->userdata)) $CI->session->userdata = NULL;

と破壊してやったらうまくログアウトできました。皆さんのところでは
Simpleloginはうまく動いていますか?

-- 
モカぱぱ <mocap****@pugpu*****>




Codeigniter-users メーリングリストの案内
Back to archive index