首页 文章

登录Codeigniter无法正常工作

提问于
浏览
0

我是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 回答

  • 0

    试试这个:

    public function index() {
    
        $data['title'] = SITE_NAME . ': Login';
        $data['msg'] = '';
        $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
    
        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) {
            var_dump($userRow);
            $data['msg'] = 'Sai tên đăng nhập hoặc password';
            $data['test'] = array($username, $password); //this is array to show the input
            $this->load->view('admin/home_view', $data);
            return;
        }
    
        echo 'it worked! <pre>';
        print_r($userRow);
        exit;
    
        $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', '');
    }
    

    模型:

    public function authenticate_admin($user_name, $password) {
        $this->db->where('username', $user_name);
        $this->db->where('password', $password);
        $query = $this->db->get('admin');
        if ($query->num_rows == 1) {
            return $query->row();
        } else {
            return false;
        }
    }
    

    看看它输出的是什么 . 如果它继续输出false并输入条件语句,那么您就知道以下事项之一(1)您输错了用户名和/或密码(2)您输入的是“正确”的用户名和密码,您只需输入详细信息错误地存储在数据库中 .

    也:

    • 哈希密码 never store plaintext passwords in db

    • 使用Ion Auth等现有系统

相关问题