我正在学习通过codeigniter进行简单的登录,然后我收到了类似的错误
Missing argument 1 for C_login::login()
当我在视图中按“登录”按钮而不输入用户名和密码字段时。{/ p>
这些是我的控制器,我的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;
}
}
}?>
答案 0 :(得分:1)
您需要从$password
控制器的login
方法中删除形式参数C_login
。显然,你不会通过URL传递密码,对吗?
关于模型中未定义方法的第二个错误,这是因为你用错误的名称调用了你想要的方法。您在模型中将其命名为login
,但您在控制器中要求cekpass
。重命名方法定义,或者将您要调用的内容更改为login
。