CI 1.7.3 アプリでユーザー管理にTank Authを使用しています。flash_message
すべて正常に動作していますが、ユーザーがログアウトしたときに表示されるように設定しようとしています。問題は、$this->tank_auth->logout();
関数がセッションを破棄することです。Tank Auth ライブラリのログアウト機能を次のように変更しました。
function logout() {
$this->delete_autologin();
// See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line
$user_session_data = array('user_id' => '', 'username' => '', 'status' => '');
$this->ci->session->set_userdata($user_session_data);
$this->ci->session->unset_userdata($user_session_data);
}
以前は
function logout()
{
$this->delete_autologin();
// See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line
$this->ci->session->set_userdata(array('user_id' => '', 'username' => '', 'status' => ''));
$this->ci->session->sess_destroy();
}
私のコントローラーには
function logout(){
if ($this->tank_auth->is_logged_in()) { // logged in
$this->session->set_flashdata('status_message', $this->lang->line('auth_message_logged_out'));
$this->tank_auth->logout();
redirect('');
}
}
関数を削除すると$this->tank_auth->logout();
、メッセージは正常に表示されます。私はそれが単純なセッションの問題だと確信しています