gpt4 book ai didi

mysql - 如果用户达到了 codeigniter 数据库中的到期时间,则从网站注销用户

转载 作者:行者123 更新时间:2023-11-29 10:09:21 25 4
gpt4 key购买 nike

如果用户达到了我存储在数据库中的到期时间,我将尝试从网站上注销用户。我创建了一个名为 user_sessions 的表,其中存储了当前的 useridlogintime(varchar)expirytime(varchar)> 我在到期时间字段中为登录时间额外添加了一分钟,因此当用户登录时,这些所有值都将存储在数据库中。

因此,用户登录后,他们将重定向到仪表板,因此如果用户在一分钟内没有在网站上执行任何操作,并且如果他们尝试访问下一页,他们应该从网站注销。

如果用户继续移动到下一页,我需要在每次移动到下一页时在登录时间字段中添加一分钟的额外时间。

我已经像这样存储在数据库中

这是我的模型:

  public function sessionStore($data)
{
$this->db->select('*');
$this->db->from('users');
$this->db->where('username', $data['username']);
$this->db->limit(1);
$query = $this->db->get();
if ($query->num_rows() == 1) {
$result = $query->result_array();
$recordId = $result[0]['id'];
$status = $result[0]['status'];
$sessionID = random_string('alnum',16);
$currentpass = $result[0]['password'];
if ($status != 1) {
return 4;
}
$checktrue = password_verify($data['password'], $currentpass);
// $checktrue = true;
if ($checktrue) {
$data_log = array(
'userid' => $recordId,
'sessionid' => $sessionID,
'logintime' => time(),
'expirytime' => time()+(60*1)
);
$this->db->insert('user_sessions', $data_log);
return 1;
}
}
}

这是我的 Controller :

 public function login_user() {
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean', 'required');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean', 'required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('login_view');
} else {
$data = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
$result = $this->Login_model->login($data);
$res = $this->Login_model->sessionStore($data);

if ($result == 1) {
$userData = $this->Login_model->getUserData($data);
$sessionArray = array(
'is_logged' => TRUE,
'user_name' => $data['username'],
'first_name' => $userData['firstname'],
'last_name' => $userData['lastname'],
'userlevel' => $userData['userlevel'],
'organisation_id' => $userData['organisation_id'],
'user_id' => $userData['id'],
'lastip' => $userData['lastip']

);
$this->session->set_userdata($sessionArray);
redirect('dashboard');
} else if ($result == 2) {
$this->session->set_flashdata('message', 'Password seems to be wrong!');
$this->load->view('login_view', $data);
} else if ($result == 4) {
$this->session->set_flashdata('message', 'Username is not active!');
$this->load->view('login_view', $data);
}else {
$this->session->set_flashdata('message', 'Username not found!');
$this->load->view('login_view', $data);
}
}
}

任何人都可以帮助我如何做到这一点。

提前致谢。

最佳答案

请按照以下步骤操作:

创建Common_model.php文件\application\models\Common_model.php

autoload.php中添加common_model \application\config\autoload.php

$autoload['model'] = array('common_model');

Common_model.php中写入以下代码。

<?php
class Common_model extends CI_Model {
function __construct()
{
parent::__construct();
$this->checkUserActivity();
}
public function checkUserActivity(){
$this->db->where('expirytime >=',time());
$this->db->where('userid',$this->session->userdata('user_id'));
$result = $this->db->get('user_sessions')->first_row();
/* Check If user active within 1 minute then add 1 minute more*/
if($result){ // Update
$data_log = array(
'expirytime' => time()+(60*1)
);
$this->db->where('userid',$this->session->userdata('user_id'));
$this->db->update('user_sessions', $data_log);
} else {//Logout
$this->activityLogout();
}
//echo $this->db->last_query(); exit;
}

public function activityLogout()
{
$this->session->unset_userdata('user_id'); // single unset
$this->session->sess_destroy(); // Unset all your
redirect('home', 'refresh');
}
}
?>

希望这对您有帮助!

关于mysql - 如果用户达到了 codeigniter 数据库中的到期时间,则从网站注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51282113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com