dskpywvki951583595 2016-02-04 09:23
浏览 46
已采纳

Codeigniter form_validation不验证

I'm currently working on my login form. Yesterday when I logged in, even though the credentials are wrong it logs me in so I changed the = to == of this code in my model.

public function can_log_in() {

    $sql ="SELECT * FROM tbl_users WHERE USERNAME = ? AND PASSWORD = ?";
    $data1 = array(
        'USERNAME' => $this->input->post('USERNAME'),
        'PASSWORD' => $this->input->post('PASSWORD')
    );
    $query = $this->db->query($sql, $data1);

    if ($query->num_rows == 1) {
        return true;
    } else {
        return false;
    }
}

Now even if the credentials are right it doesnt log-in. Here are my controllers:

public function loginValidate() {

    $this->load->library('form_validation');

    $this->form_validation->set_rules('USERNAME','Username','required|trim|callback_validateCreds');
    $this->form_validation->set_rules('PASSWORD','Password','required|trim');

    if ($this->form_validation->run() == FALSE) {
        $this->index();
    } else {
        $data = array(
            'USERNAME' => $this->input->post('USERNAME'),
            'is_logged_in' => 1
        );
        $this->session->set_userdata($data);

        redirect('login/adminIndex'); 
    }
}

public function validateCreds() {

    $this->load->library('form_validation');
    $this->load->model('login_model');

    if($this->login_model->can_log_in()) { // can_log_in() model
        return true;
    } else {
        $this->form_validation->set_message('validateCreds','Username and password did not match.');  //return message to validateCreds

        return false;
    }
}
  • 写回答

1条回答 默认 最新

  • dtxpz8785 2016-02-04 09:52
    关注

    in Problem Model function near if($query->num_rows==1)

    you change like this if($query->num_rows()==1)

    full code in model function

    public function can_log_in(){
    
    $sql ="SELECT * FROM tbl_users WHERE USERNAME = ? AND PASSWORD = ?";
    $data1 = array(
        'USERNAME' => $this->input->post('USERNAME'),
        'PASSWORD' => $this->input->post('PASSWORD')
        );
    
    $this->db
    $query = $this->db->query($sql, $data1);
    
    
    if ($query->num_rows() == 1){
    
        return true;
    
    }else{
    
        return false;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?