[英]Login registration fails to login in codeigniter?
我一直在尝试将我的数据库与 php codeigniter 框架连接起来,因为我正在为我的项目创建一个登录表单,但是我在表单验证回调中遇到了问题。 即使我输入了正确的用户名密码。 它仍然给我不正确的用户名/密码。
这是我位于application/config
的database.php
的代码:
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'users';
$db['default']['password'] = 'p455w0rd';
$db['default']['database'] = 'users';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
这是我的登录控制器的代码:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class C_login extends CI_controller{
public function index()
{
$this -> login();
}
public function login(){
$this->load->view('login');
}
public function members(){
$this->load->view('members');
}
public function login_validation(){
$this->load->library('form_validation');
//$this->form_validation->CI =& $this;
$this->form_validation->set_rules('username', 'Username', 'required|trim|xss_clean|callback_validate_credentials');
$this->form_validation->set_rules('password', 'Password', 'required|md5|trim');
if($this->form_validation->run($this) == false){
$this->load->view('login');
}
else{
redirect('c_login/members');
}
}
public function validate_credentials(){
$this->load->model('model_users');
if($this->model_users->can_log_in()){
return true;
}
else{
$this->form_validation->set_message('validate_credentials', 'Incorrect username/password');
return false;
}
}
}
我的模型用户:
<?php
class Model_users extends CI_Model {
public function can_log_in(){
$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;
}
else{
return false;
}
}
}
如果你们能帮我解决这个问题,那将是一个非常大的帮助。 我正在使用 XAMPP 1.7.3a。
从此语句中删除 md5
$this->form_validation->set_rules('password', 'Password', 'required|md5|trim');
您在此处将密码转换为 md5,然后再次在模型中转换密码
$this->db->where('password', md5($this->input->post('password')));
我认为这就是问题所在
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.