首页 文章

Codeigniter Ajax登录问题

提问于
浏览
0

我正在使用Codeigniter和Jquery构建一个Ajax登录...我有一个小问题,返回“无效登录”消息并且它让我烦恼 .

在登录页面上我有:

$(document).keypress(function (e) {
    if (e.which == 13) {
        var login = $("#login").val();
        var pass = $("#pass").val();

        $('#login-block').removeBlockMessages().blockMessage('Please wait, cheking login...', {
            type: 'loading'
        });
        $.post("<?php echo base_url(); ?>index.php/login/validate_credentials/", {
            username: login,
            password: pass
        }, function (data) {
            if (data.error) {
                $('#login-block').removeBlockMessages().blockMessage(data.message, {
                    type: 'error'
                });
            } else {
                document.location.href = data.redirect;
            }
        }, "json");
    }
});

validate() 函数只是在数据库中查询用户名和密码匹配,如果num_rows = 1则返回用户数据 .

尝试登录时所有这一切都正常,但是当我输入不存在的用户名时,我不会收到“错误登录”错误...

如果我使用真实的用户名和假密码,我会收到错误 .

如果用户名和密码正确,则登录确定 .

我只是不明白为什么它不会显示和错误当用户名不存在?

Edit

这是模型中的Validate()函数 .

function validate() {

    // CHECK LOGIN DETAILS
    $this->db-> select('first_name,last_name,usertype,id,products,mac');
    $this->db-> where('username', $this->input->post('username'));
    $this->db-> where('password', md5($this->input->post('password')));
    $query = $this->db->get('membership');

    if ($query->num_rows() > 0) {
        $data = array('usertype' => $row->usertype, 'userid' => $row->id, 'first_name' => $row->first_name, 'last_name' => $row->last_name, 'products' => $row->products, 'mac' = > $row->mac);
        return $data;
    }
}

2 回答

  • 0
    if(data.error){
        $('#login-block').html('<p>'+data.message+'</p>);
    } else {
        document.location.href = data.redirect;
    }
    

    试试吧 .

    if($query->num_rows()==1)
    {
    $data2 = array(
        'error' => false,
        'redirect' => base_url().'index.php/site/home/'
        );
    

    好的,我看到了那个怎么样?在登录时,你应该总是检查num_rows = 1,顺便说一下,永远不应该有多个 .

  • 0

    修正了它

    $.getJSON('<?php echo base_url(); ?>index.php/login/validate_credentials/',{username: login, password: pass}, function(data) {
    if(data.error){
    $('#login-block').removeBlockMessages().blockMessage(data.message, {type: 'error'});   
    } else {
    document.location.href = data.redirect;
    }
    });
    

    我需要使用getJSON而不是post . 我不得不更新模型函数以使用get而不是post变量 . 它现在按照我的希望工作 .

相关问题