【发布时间】: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