【问题标题】:store logout time in database using codeigniter使用codeigniter在数据库中存储注销时间
【发布时间】:2017-05-04 06:07:17
【问题描述】:

我想在单击注销按钮时将注销时间存储在数据库中。请帮助我如何获取日期和时间并将其存储在数据库中。我对codeigniter不太熟悉。

这是我的注销控制器

public function logout()
{
    $this->session->unset_userdata('SESS_ADMIN');

    redirect('test');
}

【问题讨论】:

  • 首先,您是否尝试过实现这一目标?你尝试过什么但没有奏效?是否创建了用户表?
  • 是的,当然我有一个用户表,我尝试使用一些代码,但它不起作用。
  • 你有模特吗?如果是,只需在模型中创建一个函数以在注销表中更新/插入。请参考:codeigniter.com/userguide3/database/…

标签: php database codeigniter


【解决方案1】:

在模型中创建一个函数并从控制器调用它

控制器

public function logout() {
    $date = array(
        'date'=>date('d-m-y h:i:s')
    );
    $this->model_name->logout($date);
    $this->session->unset_userdata('SESS_ADMIN');
    redirect('test');
}

型号

    public function logout($date)
    {
        $this->db->insert(table_name, $date);
    }

【讨论】:

    【解决方案2】:
    public function logout()
    {
        $dateTime = date("Y-m-d H:i:s"); 
        $this->userModel->updateLogoutTime($dateTime);
        $this->session->unset_userdata('SESS_ADMIN');
    
        redirect('test');
    }
    

    UserModel.php

    public function updateLogoutTime($dateTime="") {
          $data = array(
                 'logoutTime' => $dateTime,
          );
          $userId = $this->session->userdata('YOUR_USER_ID_VARIABLE_NAME');
          $this->db->where('id', $userId);
          $this->db->update('TABLENAME' ,$data);
          return $this->db->affected_rows();
    }
    

    【讨论】:

      【解决方案3】:

      首先创建你的表。

      create table tbl_user_logout(
       id int not null AUTO_INCREMENT,
       user_id int,
       logout_date varchar(100),
       logout_time varchar (100),
       PRIMARY key(id)
      );
      

      然后转到 application/config/database.php 并提供您的数据库详细信息

      然后在您的控制器中添加此代码

          public function logout()
          {   
              $this->session->unset_userdata('SESS_ADMIN');
      
              $today_date=date('Y-m-d');
              $today_time=date('H:i:s');
      
              $post_data=array(
                  "user_id"=>$user_id, // user_id you have to get from session data
                  'logout_date'=>$today_date,
                  'logout_time'=>$today_time,
              );
              $this->db->insert('tbl_user_logout',$post_data);
      
              redirect('test');
          }
      

      【讨论】:

        【解决方案4】:

        对于那些使用 Codeigniter 4 (ci_4) 的人,这是我在 ci3 指导我之后的解决方案。

        我的控制器

        public function logout()
        {
        
            $this->mysessionsModel      = new MySessionsModel();
        
            $id = session()->get('logged_user');
            $time = ['logged_out' =>  date("Y-m-d H:i:s")];
        
            if(!empty($id)){
            $this->mysessionsModel->logoutTime($id, $time); 
            }
            $session = session();
            session()->remove('logged_user');
            session()->remove('loggedIn', true);    
            
            $session->destroy();
            return redirect()->to('/'); 
        }
        

        型号

        //更新系统中的用户注销时间。

        public function logoutTime($id, $time)
        {
            $builder = $this->db->table('table_name');
            $builder->where('code', $id);
            $builder->update(['logged_out' =>$time]);
            if($this->db->affectedRows()==1){
                 return true;
                 
             }else{
                 return false;
             }
        }
        

        注意:确保您的登录时间和注销时间没有 ATTRIBUTES “on update CURRENT_TIMESTAMP”。

        因为每次我更新注销时,上述内容都让我为金钱而奔波,所以登录时间也可能会改变。

        【讨论】:

          猜你喜欢
          • 2013-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-10
          相关资源
          最近更新 更多