在codeigniter中注销时删除令牌

时间:2018-06-09 06:39:38

标签: php codeigniter session mysqli codeigniter-3

我在用户登录后立即将user_id分配给我的会话,并在登录时向用户提供令牌,并将其存储在数据库中以保留记录。现在,我希望在用户单击“注销”时删除该令牌,

查看

<a href=" <?php base_url('user/logout') ?> ">logout</a>

控制器

public function logout(){

$uid = $this->session->userdata('user_id');
$this->load->model('loginmodel');
$lid = $this->loginmodel->deltoken($uid);

if($lid){

  $this->session->unset_userdata('user_id');

  return redirect(user);

}else {
  echo "fail";
}
}

模型

public function deltoken($uid)
{
    $query = $this->db->query("DELETE FROM user_auth WHERE id = '$uid'");
    return TRUE;
}

但是在属于该特定id的数据库记录中没有被删除。我在这做错了什么? 感谢您的建议

1 个答案:

答案 0 :(得分:1)

希望这会对您有所帮助:

您的链接中缺少echo,应该是这样的:

<a href=" <?php echo site_url('user/logout') ?> ">logout</a>

您的模型deltoken方法应如下所示:

public function deltoken($uid)
{
    $uid  = ! empty($uid) ? $uid : $this->session->user_data('user_id');
    $this->db->where('id' ,$uid);
    $this->db->delete('user_auth');
    if ( $this->db->affected_rows() )
    {
      return TRUE;
    }
    else
    {
      return FALSE;
    } 
}