1

我正在学习通过codeigniter进行简单的登录,然后出现错误,例如 Missing argument 1 for C_login::login()当我按下视图上的“登录”按钮而不输入用户名和密码字段时。

这些是我的控制器,我的 IDE(netbeanPHP+CI 框架)没有显示错误

<?php
class C_login extends CI_Controller{

public function __construct() {
    parent::__construct();
    $this->load->model('m_login'); 
}

function index()
{
    $this->form_validation->set_rules('username','trim|Username','required|exact_length[4]|xss_clean');
    $this->form_validation->set_rules('password','trim|Password','required|min_length[4]|max_length[40]|xss_clean|callback_login');

    if($this->form_validation->run() == false)
    {
        $this->load->view('login');
    }
    else
    {
        echo 'sukses validasi';
    }

}

function login($password)
{
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $jabatan = $this->input->post('jabatan');

    $value = $this->m_login->cekpass($username,$password,$jabatan);

    if($value)
    {
        return true;
    }
    else
    {
        return false;
    }

}


}
 ?>

这是模型,我认为我的模型没有显示任何错误

<?php
class M_login extends CI_Model{

public function __construct() {
    parent::__construct();
}

function login ($username, $password, $jabatan)
{
   $this->db->where('username',$username);
   $this->db->where('password',$password);
   $this->db->where('jabatan',$jabatan);

   $value = $this->db->get('ms_user');

   if($value->num_rows()>0)
   {
       return true;
   }
   else
   {
       return false;
   }


}
}?>
4

1 回答 1

1

您需要$password从控制器的login方法中删除形参。C_login显然,您不会通过 URL 传递密码,对吧?

至于关于模型中未定义方法的第二个错误,这是因为您使用错误的名称调用您想要的方法。您在模型中命名它login,但您cekpass在控制器中调用它。重命名方法定义,或者更改您要调用的内容login

于 2012-10-10T08:34:06.640 回答