【问题标题】:Codeigniter session issue destroy/createCodeigniter 会话问题销毁/创建
【发布时间】:2014-09-16 16:40:37
【问题描述】:

我正在从 Codeigniter 的 1.7.3 升级到 2.2.0。我的旧登录脚本有效,但不再有效。为什么 sess_destroy 会导致这种情况?

这个工作在新版本的codeigniter中:

        $this->session->sess_destroy();
        $this->session->unset_userdata( array( 'logged' => false, 'users_id' => false, 'teams_id' => false, 'leader_teams_id' => false ) );
        $this->session->sess_create();              
        $this->session->set_userdata( $data );

这在新版本的 codeigniter 中不起作用:

        $this->session->sess_destroy();
        $this->session->unset_userdata( array( 'logged' => false, 'users_id' => false, 'teams_id' => false, 'leader_teams_id' => false ) );         
        $this->session->set_userdata( $data );

所以基本上$this->session->sess_create(); 让它工作,但为什么会这样,这样使用它实际上是否正确?

这是在旧版本的 codeigniter 中运行的完整登录功能:

function login_do()
{
    if ( $_POST['username'] && $_POST['password'] )
    {
        $user = $this->db->where( array( 'users_name' => trim( $_POST['username'] ), 'users_password' => sha1( md5( $_POST['password'] ) ) ) )->get( 'users' );
        if ( $user->num_rows == '1' )
        {
            $user = $user->row();
            $data = array( 'logged' => true, 'users_id' => $user->users_id );
            if ( $user->users_teams_id > '0' )
            {
                $leader = $this->db->where( array( 'team_leader_id' => $user->users_id, 'teams_id' => $user->users_teams_id ) )->get( 'teams' )->row();
                $data['teams_id'] = $user->users_teams_id;
                if ( $leader )
                    $data['leader_teams_id'] = $user->users_teams_id;
            }

            $this->session->sess_destroy();
            $this->session->unset_userdata( array( 'logged' => false, 'users_id' => false, 'teams_id' => false, 'leader_teams_id' => false ) );
            $this->session->set_userdata( $data );
        }
        else
            $this->session->set_flashdata( 'error', 'user_pass' );
    }
    else
        $this->session->set_flashdata( 'error', 'data' );

    redirect( 'home' );
}

【问题讨论】:

    标签: php codeigniter session codeigniter-2


    【解决方案1】:

    Codeigniter 会话创建:

    $data = array(
           'logged'   => $logged,
           'users_id' => $users_id,
           'teams_id'  => $teams_id,
           'leader_teams_id'=> $leader_teams_id
        );
     $this->session->set_userdata($data);
    

    Codeigniter 会话销毁:

    $array_items = array('logged' =>'', 'users_id'=>'', 'teams_id'=>'', 'leader_teams_id'=>'');    
        $this->session->unset_userdata($array_items);
    

    【讨论】:

      猜你喜欢
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 2012-03-22
      • 2012-02-23
      • 2013-10-06
      相关资源
      最近更新 更多