Codeigniter Can';使用Ion Auth logout()方法后,无法获取要显示的flashdata
我正在将Ion Auth与CodeIgniter一起使用,在使用注销方法后,我不知道如何获取要显示的会话数据 我有这样的注销方法:Codeigniter Can';使用Ion Auth logout()方法后,无法获取要显示的flashdata,codeigniter,ion-auth,Codeigniter,Ion Auth,我正在将Ion Auth与CodeIgniter一起使用,在使用注销方法后,我不知道如何获取要显示的会话数据 我有这样的注销方法: public function logout() { $this->ion_auth->logout(); $this->session->set_flashdata('msg', '<div class="has-success"><span class="help-block">Your pass
public function logout() {
$this->ion_auth->logout();
$this->session->set_flashdata('msg', '<div class="has-success"><span class="help-block">Your password has been successfully changed. Please login to continue!</span></div>');
redirect('users/login');
}
if ($this->ion_auth->change_password($identity, $this->input->post('old_password'), $this->input->post('password'))) {
$this->logout();
} else {
$this->session->set_flashdata('msg', '<div class="has-error"><span class="help-block">'.$this->ion_auth->errors().'</span></div><div class="has-error"><span class="help-blocK"></span></div>');
redirect('users/change_password');
}
public函数注销(){
$this->ion_auth->logout();
$this->session->set_flashdata('msg','您的密码已成功更改。请登录以继续!');
重定向(“用户/登录”);
}
调用此方法的方法是更改密码方法,我这样调用它:
public function logout() {
$this->ion_auth->logout();
$this->session->set_flashdata('msg', '<div class="has-success"><span class="help-block">Your password has been successfully changed. Please login to continue!</span></div>');
redirect('users/login');
}
if ($this->ion_auth->change_password($identity, $this->input->post('old_password'), $this->input->post('password'))) {
$this->logout();
} else {
$this->session->set_flashdata('msg', '<div class="has-error"><span class="help-block">'.$this->ion_auth->errors().'</span></div><div class="has-error"><span class="help-blocK"></span></div>');
redirect('users/change_password');
}
if($this->ion\u auth->change\u password($identity,$this->input->post('old\u password'),$this->input->post('password')){
$this->logout();
}否则{
$this->session->set_flashdata('msg','.$this->ion_auth->errors();
重定向(“用户/更改密码”);
}
我在登录页面上的视图中也像往常一样重复了它:
<?php echo $this->session->flashdata('msg'); ?>
只要我删除$this->ion\u auth->logout()
方法,一切都会正常工作
我知道logout()
方法会破坏会话,所以我会在之后设置flashdata,但是当我重定向到登录页面时,仍然没有收到消息。在github回购协议中似乎也是这样设置的
有什么想法吗?这是因为注销会破坏会话,并且在下次刷新CI处理会话的方式之前,没有新会话可以使用
此处要注意的代码是服务器在销毁会话后不会创建会话,直到向服务器发出新请求。只需在控制器中创建另一个函数,注销后重定向到该函数,并在该函数中设置flashdata,然后将其重定向到所需的位置 示例:
public function logout() {
if ($this->ion_auth->logged_in()) {
$this->ion_auth->logout();
redirect(base_url() . 'front/logout_message', 'refresh');
}
redirect(base_url(), 'refresh');
}
public function logout_message() {
$this->session->set_flashdata('message', 'Successfully! Logged Out!');
redirect(base_url(), 'refresh');
}
您可以使用
unset\u userdata
保存您的flashdata
使用以下功能注销并保留flashdata:
function logout_with_flashdata(){
$ci =& get_instance();
foreach($ci->session->userdata as $k => $v){
if($k == 'message' || $k == '__ci_vars'){
continue;
}
$ci->session->unset_userdata($k);
}
}
知道了!有办法解决这个问题吗?也许像重定向两次,一次创建会话,存储消息,然后再次重定向?