注销在codeigniter中不起作用

时间:2018-08-14 13:18:54

标签: php mysql codeigniter

嗨,我正在尝试在codigniter中使用注销代码,由于某种原因,它无法正常工作。

这是我的注销代码:

 public function Logout() {
    $this->Login_model->saveLogout();
    $this->session->sess_destroy();
    redirect('Login');
}

这是我的模型代码:

    public function saveLogout() {
    $recordId=$this->session->userdata('user_id');
     $ipaddress = $this->input->ip_address();
    $dataLog = array(
        'userid' => $recordId,
        'entertime' => time(),
        'ip' => $ipaddress,
        'log_operation' => 'Logout'
    );
    $dataUser = array(
        'previous_visit' => time(),
        'lastip' => $ipaddress
    );
    $this->db->insert('log_table', $dataLog);
    $this->db->set($dataUser); //value that used to update column  
    $this->db->where('id', $recordId); //which row want to upgrade  
    $this->db->update('users');  //table name
}

当我单击注销时,它显示以下错误

    Column 'userid' cannot be null

INSERT INTO `log_table` (`userid`, `entertime`, `ip`, `log_operation`) VALUES (NULL, 1534252667, '::1', 'Logout')

任何人都可以帮我解决问题吗

谢谢。

1 个答案:

答案 0 :(得分:2)

当您写$this->session->sess_destroy();而没有任何条件检查之后再写时,它将在执行其他命令之前破坏会话。 类似于headers already sent

这样做

在控制器中

public function Logout() {
    $return = $this->Login_model->saveLogout(); # alter

    if(!$return)
    {
        echo "went wong"; die;
    }
    else
    {
        $this->session->sess_destroy();
        redirect('Login');
    }
}

在模型中

public function saveLogout() {

    # your model code

    return true; # add this
}