我是CodeIgniter的新手,并且登录功能有问题 . 它总是返回“错误的密码或用户名”作为我的消息,但我的表'admin'用户名= admin,密码= admin . 我已经显示了数组以查看返回,它返回了admin,admin(我输入的字段) . 我在autoload.php文件上有加载模型,库和帮助器,我不明白我的错误在哪里,以及任何帮助我显示存储在表'admin'上的用户名和密码的建议(以确保我已正确连接数据库) )
这是我的控制器
public function index(){
$data['title'] = SITE_NAME.': Login';
$data['msg'] = '';
$this->form_validation->set_rules('username', 'Username', 'trim|required');
$this->form_validation->set_rules('password', 'Password', 'trim|required');
if ($this->form_validation->run() === FALSE) {
$this->load->view('admin/home_view', $data);
return;
}
$password = $this->input->post('password');
$userRow = $this->Admin_model->authenticate_admin($this->input->post('username'), $password);
if(!$userRow){
$data['msg'] = 'Sai tên đăng nhập hoặc password';
$this->load->view('admin/home_view', $data);
return;
}
$admin_data = array(
'admin_id' => $userRow->id,
'name' => $userRow->admin_username,
'is_admin_login' => TRUE);
$this->session->set_userdata($admin_data);
redirect(base_url().'admin/dashboard','');
}
我的看法
<div class="loginfrm">
<img src="<?php echo base_url('public/images/admin_images/logo.png');?>" class="mainlogologin">
<div class="err"><?php echo($msg);?> <?php print_r($test);?></div>
<form method="post" action="">
<div class="formwrp">
<label>Tên đăng nhập</label>
<input name="username" class="frmfield" id="username" type="text">
<?php echo form_error('username', '<div class="err"><span>', '</span></div>'); ?>
<label>Mật khẩu</label>
<input name="password" class="frmfield" id="password" type="password">
<?php echo form_error('password', '<div class="err"><span>', '</span></div>'); ?>
<div class="logbtnwr">
<input value="Đăng nhập" class="loginbtn" type="submit">
</div>
</div>
</form>
而我的模特
<?php
class Admin_model extends CI_Model {
public function __construct() {
// parent::__construct();
$this->load->database();
}
public function update($data){
$return=$this->db->update('pp_admin', $data);
return $return;
}
public function authenticate_admin($user_name, $password) {
$this->db->select('*');
$this->db->from('pp_admin');
$this->db->where('admin_username', $user_name);
$this->db->where('admin_password', $password);
$Q = $this->db->get();
if ($Q->num_rows > 0) {
$return = $Q->row();
} else {
$return = 0;
}
$Q->free_result();
return $return;
}
提前致谢 . 我搜索了很多网站,但不知道我的错误在哪里 . 对不起,如果这个话题相同
1 回答
试试这个:
模型:
看看它输出的是什么 . 如果它继续输出false并输入条件语句,那么您就知道以下事项之一(1)您输错了用户名和/或密码(2)您输入的是“正确”的用户名和密码,您只需输入详细信息错误地存储在数据库中 .
也:
哈希密码 never store plaintext passwords in db
使用Ion Auth等现有系统