从1.7.3更新到2.2.0代码点火器-功能/代码问题


Updated from 1.7.3 to 2.2.0 Codeigniter - function/code issue

我已将CI从1.7.3升级到2.2.0,并进行了必要的更改,但不知何故,脚本不再将我登录到网站。我在注册后自动登录,它正常工作,但通常输入ID和密码不再工作。在我输入ID和密码后,它什么也不做。是什么原因导致下面的函数出现这种情况?这是一次会议,但自旧版本以来到底发生了什么变化。

EDIT2:system/librarys/session.php中2.2.0版本的会话文件对我来说工作不正常,但我以前的1.7.3 session.php文件可以工作。因此,在下面的代码中,某些内容肯定与会话有关。使用我的旧session.php文件安全吗?或者我也必须升级它

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 );

            $already_logged = $this->db->where( array( 'users_id' => $this->user->id() ) )->get( 'logged_today' );
            if ( $already_logged->num_rows == '0' )
            $this->db->insert( 'logged_today', array( 'users_id' => $this->user->id() ) );
        }
        else
            $this->session->set_flashdata( 'error', 'user_pass' );
    }
    else
        $this->session->set_flashdata( 'error', 'data' );
    redirect( 'home' );
}

来自CodeIgnitor Documentation

$this->session->sess_destroy();

这个函数应该是最后一个调用的函数,甚至是flash变量将不再可用。如果你只想销毁一些物品不是全部,使用unset_userdata()

还检查会话库的更改日志