【发布时间】:2014-09-16 16:53:53
【问题描述】:
我已将我的 CI 从 1.7.3 升级到 2.2.0,并进行了必要的更改,但不知何故,脚本不再让我登录网站。注册后我有自动登录,它可以正常工作,但通常输入 ID 和密码不再有效。在我输入 ID 和密码后它什么也不做。在下面的这个函数中可能会导致什么?这是会话,但与旧版本相比到底发生了什么变化。
EDIT2:位于 system/libraries/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' );
}
【问题讨论】:
-
你逐行调试了吗?表示您获得所需输出的哪一行
-
我已经更新了我的主帖。请检查
标签: php codeigniter session