Php Codeigniter在登录控制器上给出异常结果
我正在使用codeigniter框架。我有一个登录模型和一个带有视图的控制器。出于测试目的,我在数据库的用户表中设置了admin作为用户名,admin作为密码。 但是,当我使用admin13356或admindsgsd或AdminWhatch并使用admin作为密码时,登录是成功的。我不明白为什么 我的控制器功能如下Php Codeigniter在登录控制器上给出异常结果,php,codeigniter,Php,Codeigniter,我正在使用codeigniter框架。我有一个登录模型和一个带有视图的控制器。出于测试目的,我在数据库的用户表中设置了admin作为用户名,admin作为密码。 但是,当我使用admin13356或admindsgsd或AdminWhatch并使用admin作为密码时,登录是成功的。我不明白为什么 我的控制器功能如下 function check(){ $this->load->model('loginModel'); $query = $this-&
function check(){
$this->load->model('loginModel');
$query = $this->loginModel->validate();
if($query){
$data = array('username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
//redirecting to appropriate page
redirect('success');
}else{
$this->session->set_flashdata('loginCheck','Username/Password Comination Incorrect!');
redirect('login');
}
}
我的模型如下
function validate(){
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows() == 1){
return true;
}
}
函数验证(){
//转储接收到的所有post变量
回声';
function validate($username,$password){
$this->select('*');
$this->from('table_name');
$this->db->where('username', $username);
$this->db->where('password', md5($password));
$query = $this->db->get();
if($query->num_rows() == 1){
return true;
}
}
打印($this->input->post());
回声“
”;
function validate($username,$password){
$this->select('*');
$this->from('table_name');
$this->db->where('username', $username);
$this->db->where('password', md5($password));
$query = $this->db->get();
if($query->num_rows() == 1){
return true;
}
}
function validate(){
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows() == 1){
return true;
}
return false;
}
$this->db->where('username'),$this->input->post('username');
$this->db->where('password',md5($this->input->post('password'));
$query=$this->db->get('users');
//转储查询结果是什么
回声“
”;
function validate($username,$password){
$this->select('*');
$this->from('table_name');
$this->db->where('username', $username);
$this->db->where('password', md5($password));
$query = $this->db->get();
if($query->num_rows() == 1){
return true;
}
}
function validate(){
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows() == 1){
return true;
}
return false;
}
打印($query->result());
回声';
function validate($username,$password){
$this->select('*');
$this->from('table_name');
$this->db->where('username', $username);
$this->db->where('password', md5($password));
$query = $this->db->get();
if($query->num_rows() == 1){
return true;
}
}
//如果($query->num_rows()==1){
//返回true;
//}
}
您的代码看起来不错,但是您能检查它是否正确地传递了正确的数据吗?请先尝试转储它。像上面的代码一样检查数据和查询结果。表中有多少记录 试试这个代码
function check(){
$this->load->model('loginModel');
$query = $this->loginModel->validate($this->input->post('username'), $this->input->post('password'));
if($query){
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
//redirecting to appropriate page
redirect('success');
}else{
$this->session->set_flashdata('loginCheck', 'Username/Password Combination Incorrect!');
redirect('login');
}
}
将您的
用户名
和密码
传递给函数您正在运行哪个版本的PHP?我以前在PHP中遇到过一些问题,对于非返回,它返回TRUE
尝试将return false
添加到validate()方法:
此外,模型应该是输入不可知的。一定要考虑将$this->input->post()
移动到控制器,并将值作为参数传入:
这允许您在其他场景中使用validate()
方法。例如(当用户名不是通过post而是通过会话提供时,重新验证密码)
控制器
型号
代码看起来不错,但我会从模型中删除post数据变量,而是在控制器中创建变量,并将它们作为
validate()
函数的参数传递。