codeigniter:使用ajax probelm登录表单

时间:2019-07-12 12:11:30

标签: codeigniter

这是我在codeigniter中的登录代码...它没有登录,只是它在jquery响应中显示了结果?此代码有什么问题? 我已经编写了控制器,模型并为此使用了jQuery。

控制器(login.php)页面

function validate_credentials(){

        $username =  $this->input->post('username');
        $password =  $this->input->post('passwd');

        $data = $this->login_model->validate();

        if($data){

            $this->session->set_userdata('username',$data); 
            redirect('site/math_page');

        }
        else{
            echo'something went wrong';
        }


    }

模型(login_model.php)页面

function validate() {

        $this->db->select('*');
        $this->db->from('user_details');
        // $this->db->where('user_email',$email);
        // $this->db->where('user_password',$pass);

            if($query=$this->db->get())
            {
                return $query->result_array();
            }
            else{
                return false;
            }

    }

登录jquery

$(document).ready(function() {

        //login js..
        $("#login_submit").click(function(){
            var username = $("#username").val().trim();
            var passwd = $("#passwd").val().trim();
            //alert(username);
            if( username == "" && passwd == "" ) {
                $(".lognerror").html("Please enter  Login credentials!");
                $(".lognerror").show().fadeOut(3000);
            }
            else if( username == "" ) {
                $(".usererror").html("Please enter username");
                $(".usererror").show().fadeOut(3000);
            }
            else if ( passwd == "" ) {
                $(".passwrderr").html("Please Enter Password");
                $(".passwrderr").show().fadeOut(3000);
            }
            else {

                $.ajax({
                    url: base_url+'index.php/login/validate_credentials',
                    data:{username:username,passwd:passwd},
                    cache: false,
                    processData: false,
                    contentType: false,
                    type: 'POST',
                    success: function (response) {
                        // do something with the result
                         //var msg = "";
                        //alert(msg);
                         if(response == 1){
                            window.location.href= base_url+'index.php/site/math_page';
                        }
                        else {
                            msg = "Invalid Login credentials!";
                        }
                        //$("#message").html(msg); 
                        $("#message").show().fadeOut(3000); 
                    }
                });
            }
        });
});

有人可以告诉我这段代码有什么问题。我是php的新手,所以请指导我完成此操作

1 个答案:

答案 0 :(得分:1)

发送$ username和$ password作为validate()中的参数。并在模型中应用where子句。并在IF条件下使用$ query-> num_rows()> 0。

在模型中-

function validate($email, $pass) {
    $this->db->select('*');
    $this->db->from('user_details');
    $this->db->where('user_email',$email);
    $this->db->where('user_password',$pass);
    $query=$this->db->get()
    if($query->num_rows() > 0) {
       return $query->result_array();
    }
    else{
       return false;
    }
 }

在控制器中-

替换

$data = $this->login_model->validate();

使用

$data = $this->login_model->validate($username, $password);

更改控制器中的响应

    if($data){
        $this->session->set_userdata('username',$data); 
        echo 1;
    }
    else{
        echo 0;
    }