尝试使用数据库验证用户信息时,Codeigniter函数不起作用

尝试使用数据库验证用户信息时,Codeigniter函数不起作用,codeigniter,validation,model,Codeigniter,Validation,Model,我正在创建一个登录系统,由于某些原因,即使我输入了正确的电子邮件和密码,它也会重定向回登录页面。被调用的模型函数似乎不起作用。这是我的密码: 控制器: <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Login extends CI_Controller { function validation() { $this

我正在创建一个登录系统,由于某些原因,即使我输入了正确的电子邮件和密码,它也会重定向回登录页面。被调用的模型函数似乎不起作用。这是我的密码:

控制器:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
    class Login extends CI_Controller {



        function validation()
        {

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

            $this->form_validation->set_rules('email', 'Email', 'required|trim');
             $this->form_validation->set_rules('password', 'Password', 'required|md5');



            if ($this->form_validation->run()){

                redirect('login/valid_credentials'); 

            }else{

              $this->load->view('login_form');
              //return false;    
            }

        }




        function valid_credentials(){

           $this->load->model('login_model');
            // oh i see

             if ($this->login_model->match_login()){
                //return true;
                 $data = array(
                    'id'=>$q['id'], 

                    'email'=>$this->input->post('email'),
                  'is_logged_in'=> 1);
                $this->session->set_userdata($data);
                $this->load->view('dashboard_view', $data);

           }else{
                 $this->load->view('login_form');


            }

       }
视图:


无需在一个函数中验证表单和在另一个函数中检查登录。使用一个函数完成所有操作

更改

  • 控制器代码更改和优化
  • 型号代码已更改
  • 一些参考资料

  • (个人推荐此网站)


  • 试试这个

    控制器

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
        class Login extends CI_Controller {     
    
            function validation()
            {
    
                $this->load->library('form_validation');
    
                $this->form_validation->set_rules('email', 'Email', 'required|trim');
                $this->form_validation->set_rules('password', 'Password', 'required|md5');
    
    
                if ($this->form_validation->run()  == FALSE )
                {
                    $this->load->view('login_form');
                    //return false; 
                }
                else{
    
                    $this->load->model('login_model');
    
                    $email = $this->input->post('email');
                    $password = $this->input->post('password');
    
                    $result = $this->login_model->match_login($email, $password);
    
                    if ($result ==false) {
                        echo "Invalid Cardinals";
                     } 
                     else 
                     {
                        $session = array(
                          'id'=>$result[0]['id'], 
                          'email'=>$this->input->post('email'),
                          'is_logged_in'=> 1
                        );
                        if (!$this->session->set_userdata($session)) {
    
                            $data['modelData'] = $result;
                            $data['sessionData'] = $session;
    
                            $this->load->view('dashboard_view', $data);
                        }
                         else {
                            echo "Error in session";.
                        }                          
                    }   
                }            
            }
    

    无需在一个函数中验证表单在另一个函数中检查登录。使用一个函数完成所有操作

    更改

  • 控制器代码更改和优化
  • 型号代码已更改
  • 一些参考资料

  • (个人推荐此网站)


  • 试试这个

    控制器

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
        class Login extends CI_Controller {     
    
            function validation()
            {
    
                $this->load->library('form_validation');
    
                $this->form_validation->set_rules('email', 'Email', 'required|trim');
                $this->form_validation->set_rules('password', 'Password', 'required|md5');
    
    
                if ($this->form_validation->run()  == FALSE )
                {
                    $this->load->view('login_form');
                    //return false; 
                }
                else{
    
                    $this->load->model('login_model');
    
                    $email = $this->input->post('email');
                    $password = $this->input->post('password');
    
                    $result = $this->login_model->match_login($email, $password);
    
                    if ($result ==false) {
                        echo "Invalid Cardinals";
                     } 
                     else 
                     {
                        $session = array(
                          'id'=>$result[0]['id'], 
                          'email'=>$this->input->post('email'),
                          'is_logged_in'=> 1
                        );
                        if (!$this->session->set_userdata($session)) {
    
                            $data['modelData'] = $result;
                            $data['sessionData'] = $session;
    
                            $this->load->view('dashboard_view', $data);
                        }
                         else {
                            echo "Error in session";.
                        }                          
                    }   
                }            
            }
    

    我试过了,但它返回了false,给出了“无效基数”,我手动将电子邮件和md5密码输入数据库。它仍然给了无效的红衣主教。md5是否可能为同一密码生成不同的md5散列?删除md5并将简单密码添加到bd。如123456和检查无MD5I取出md5,它仍然返回false,给出“无效基数”。
    $this->db->where('password',md5($password))
    在模型中,alse需要移除第一个md5 i移除的。现在是:$this->db->where('password',$password);我试过了,但它返回了false,给出了“无效基数”,我手动将电子邮件和md5密码输入数据库。它仍然给了无效的红衣主教。md5是否可能为同一密码生成不同的md5散列?删除md5并将简单密码添加到bd。如123456和检查无MD5I取出md5,它仍然返回false,给出“无效基数”。
    $this->db->where('password',md5($password))
    在模型中,alse需要移除第一个md5 i移除的。现在是:$this->db->where('password',$password);
    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
        class Login extends CI_Controller {     
    
            function validation()
            {
    
                $this->load->library('form_validation');
    
                $this->form_validation->set_rules('email', 'Email', 'required|trim');
                $this->form_validation->set_rules('password', 'Password', 'required|md5');
    
    
                if ($this->form_validation->run()  == FALSE )
                {
                    $this->load->view('login_form');
                    //return false; 
                }
                else{
    
                    $this->load->model('login_model');
    
                    $email = $this->input->post('email');
                    $password = $this->input->post('password');
    
                    $result = $this->login_model->match_login($email, $password);
    
                    if ($result ==false) {
                        echo "Invalid Cardinals";
                     } 
                     else 
                     {
                        $session = array(
                          'id'=>$result[0]['id'], 
                          'email'=>$this->input->post('email'),
                          'is_logged_in'=> 1
                        );
                        if (!$this->session->set_userdata($session)) {
    
                            $data['modelData'] = $result;
                            $data['sessionData'] = $session;
    
                            $this->load->view('dashboard_view', $data);
                        }
                         else {
                            echo "Error in session";.
                        }                          
                    }   
                }            
            }
    
    class Login_model extends CI_Model{
    
        public function match_login($email, $password){
    
            $this->db->where('email', $email);
            $this->db->where('password', md5($password));
            $query = $this->db->get('user');
    
            $result = $query->result_array();
    
            if (empty($result)) 
            {
                return false;
            } 
            else 
            {
                return $result;
            }
    
        }
    }