0

我正在使用codeigniter,我编写了一个函数来检查用户密码是否存在。这是我的模型

  1. 型号:用户

    公共函数 get_some_password($username,$password) {

        $this->db->where('user_password', $password);
        $this->db->where('user_username',$username);
        $query=$this->db->get('some_users_table');
        if($query->num_rows()==1){
            return true;
        }else{
            return false;
        }
    
  2. 控制器

    公共函数 check_password() {
    $username=$this->uri->segment(3); $temp_pass= $this->input->post('current_password'); $password=md5($temp_pass); $this->user->get_some_password($username,$password);

    }
    
    1. 视图上的ajax

    //页面加载完成

    var 成功1 = $(".success"); //成功时出现的视图上的div var error1 = $(".error"); //如果错误成功1.hide()出现在视图上的div;error1.hide();

        $('#change_password').click(function() {
            var username = $('#username').val();
            dataString2 = $('#changpassword').serialize();
            $.ajax({
                type: "POST",
                url: '<?php echo base_url(); ?>controller_name/check_password/' + username,
                data: dataString2,
                success: function() {
                    $('.success').html('password successfully updated!'),
                            success1.slideDown('slow');
    
                },
                error: function() {
                    $('.error').html('Wrong current password!'),
                            error1.slideDown('slow');
                }
    
            });
    

问题:即使返回的用户名或密码为假,Ajax 也会加载成功 div,我在哪里遗漏了什么

4

1 回答 1

2

这是正确的行为,因为当响应代码不是 200 时会执行 jquery 错误:

1)您可以在成功方法中解析返回值。

例如

success: function(data) {
    if (data == 'true') {
        // Success
    } else {
        // Error
    }
}

2)您可以从服务器404、500、503...返回错误代码来触发错误函数的执行。

例如

header("Status: 404 Not Found");

注意:标题应在任何输出完成之前执行。

在您的控制器中尝试:

public function check_password() {
    $username=$this->uri->segment(3); 
    $temp_pass= $this->input->post('current_password'); 
    $password=md5($temp_pass); 
    if(!$this->user->get_some_password($username,$password)) {
        $this->output->set_status_header('500');
        return;
    }
    ...
} 
于 2012-11-22T19:00:29.967 回答