- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果用户达到了我存储在数据库中的到期时间,我将尝试从网站上注销用户。我创建了一个名为 user_sessions 的表,其中存储了当前的 userid、logintime(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/
我已经下载了 RStudio,在打开我的代码所在的文件时,我似乎已经达到了容量限制: The file is 2.3MB the maximum file size is 2MB The file i
我有一个按钮,每次单击时,都会将 1 添加到变量中。当此变量超过 5 时,将触发警报。然而,此后触发器仍不断激活。我尝试使用 == 而不是 > 进行检查,但它做同样的事情。有什么想法吗? http:/
我正在将Slick 3.0与HikariCP 2.3.8一起使用(也可以玩2.4) 我做了很多数据库IO,并且不断达到队列限制。 有没有一种方法可以获取当前的队列大小,以及如何增加队列大小? 还是建议
在 Salesforce 中,您可以设置各种工作流程或构建用于发送电子邮件的 API 应用程序。对于大多数标准 Salesforce 组织,每天有 1000 封电子邮件的限制。 (例如,参见 here
我有一个类是这样的: public sealed class Contract { public bool isExpired { get; set; } public DateTim
我有一个带有特殊符号按钮的输入作为附加组件。 HTML
我正在尝试压缩 pdf 文件(有时是图像)。我需要一个 java 压缩器来帮助我压缩文件。我需要尺寸小于原始文档尺寸的一半。我尝试了java api中给出的deflator。但它并不是很成功。请帮我解
我正在使用这条线来创建淡入效果。 $('#div').css({opacity: 0, visibility:"visible"}).animate({opacity: 1}, 500); 可见类达到
我使用 URLCache 来缓存请求响应,最大容量如下: let diskCapacity = 100 * 1024 * 1024 let memoryCapacity = 100
我有一个计数器函数,我从这个 Answer 得到它: function countDown(i) { var int = setInterval(function () {
下面是一段代码,用于检查给定数字是否为 Lychrel 数字。这基本上意味着该程序取一个数及其倒数之和,然后取那个数及其倒数之和,等等,直到找到回文。如果它在一定的迭代次数内没有找到这样的数字(我在这
我即将对这个可怕的旧 Java Web 应用程序做一些工作,这是我的一个 friend 不久前继承的。 在我设置 tomcat、导入项目和所有这些到我的 eclipse 工作区后,我收到此错误,指出
我有一个 NSDictionary 对象,其中包含深层结构,例如包含包含字典的进一步数组的数组... 我想在层次结构中向下获取一个对象。是否有任何直接索引方法可以使用键名或其他方式获取它们? 多次调用
正如标题所说,我的 .border div 的边框跨度比它里面的要宽。它只会在达到 710px 时发生,因此您需要在 this fiddle 中展开结果窗口。 . 我希望边框保持在其内容周围而不超过它
我在 MySQL 中有一个表,通过 Microsoft Access 2013 中的链接表(通过 ODBC) Access 。 此表包含超过 124,000 条记录,我需要一个表单中的 ComboBo
一旦上一个输入达到其最大长度值,我如何才能聚焦下一个输入? a: b: c: 如果用户粘贴的文本大于最大长度,理想情况下它应该溢出到下一个输入。 jsFiddle: http://jsfiddl
我的任务是在客户的 QA 服务器上提供服务器性能报告。理想情况下,客户希望对约 900 个并发用户进行负载测试,因为这是他们在高峰时段通常使用的数量。然而,我一直在做的负载测试正在使他们的 QA 服务
我在 django 应用程序中对我的 celery worker 运行任务,其中每个任务执行大约需要 1-2 秒。通常这些执行都很好,但有时,特别是如果 Django 应用程序已经部署了一段时间,我开
我有一个 one_for_one 主管来处理类似且完全独立的 child 。 当一个 child 出现问题时,反复崩溃并触发: =SUPERVISOR REPORT==== 30-Mar-2011::
根据该网站,他们在免费计划中限制了 100 个并发连接,但是当第 101 个连接尝试连接时,它被拒绝,那么什么时候允许新连接? 例如:用户是否必须等待一定时间或一旦一个连接关闭,另一个连接就有机会连接
我是一名优秀的程序员,十分优秀!