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から仮パラメーターを削除する必要があります。明らかに、URL 経由でパスワードを渡すつもりはありませんよね?loginC_login

モデルの未定義メソッドに関する 2 番目のエラーについては、必要なメソッドを間違った名前で呼び出しているためです。モデルで名前を付けましたが、コントローラーでlogin呼び出しています。cekpassメソッド定義の名前を変更するか、login代わりに呼び出し先を変更してください。

于 2012-10-10T08:34:06.640 に答える