Php Codeigniter限制每天登录四次
大家好,我想限制每天登录四(4)次 我就是这样工作的 是否需要将登录尝试设置为userdata 有人已经这么做了吗 控制器Php Codeigniter限制每天登录四次,php,codeigniter,login,Php,Codeigniter,Login,大家好,我想限制每天登录四(4)次 我就是这样工作的 是否需要将登录尝试设置为userdata 有人已经这么做了吗 控制器 // database work $data = $this->login_model->validate_login($this->input->post('username'), $this->input->post('password')); 模型 您应该将尝试次数(或记录,如果您愿意)存储在数据库(例如MySQL或Red
// database work
$data = $this->login_model->validate_login($this->input->post('username'), $this->input->post('password'));
模型
您应该将尝试次数(或记录,如果您愿意)存储在数据库(例如MySQL或Redis)中,而不是存储在会话数据中。
因为如果用户清除了浏览器cookie,则会话可以被清除。您应该将尝试次数(或记录,如果您愿意)存储在数据库(例如MySQL或Redis)中,而不是存储在会话数据中。
因为如果用户清除了他们的浏览器cookie,会话就可以被清除。用userId(FK,int)、attemptCount(int)、lasttrunt(datetime)创建另一个表 逻辑是:
B如果否,则创建一个条目,将尝试设置为1
使用userId(FK,int)、attemptCount(int)、lasttrunt(datetime)创建另一个表 逻辑是:
B如果否,则创建一个条目,将尝试设置为1
非常感谢。如果我有问题,我会尝试一下,然后再发一次。谢谢。如果我有问题,我会尝试一下,然后在这里再次发布
public function validate_login($username, $password) {
$this->load->helper('password');
$this->db->select('user_id, username, password, date_registered, active, login_attempts');
$this->db->from('users');
$this->db->where('username', $username);
$this->db->limit(1);
$query = $this->db->get();
if($query->num_rows() == 1) {
$row = $query->row();
if (hash_password($password) == $row->password) {
$array['user_id'] = $row->user_id;
$array['username'] = $row->username;
$array['date_registered'] = $row->date_registered;
$array['active'] = $row->active;
return $array;
}
}
// login attempts +1 because login failed
$this->_increase_login_attempts($username);
return (1 + (isset($row) ? $row->login_attempts : 0));
}
private function _increase_login_attempts($username) {
$this->db->set('login_attempts', 'login_attempts + 1', FALSE);
$this->db->where('username', $username);
$this->db->update('users');
if ($this->db->affected_rows() == 1) {
return true;
}
return false;
}