0

私は最初にこの機能のロジックを紙に描いたので、これをどこに使用するかはある程度意味がありました。フォームを作成しました。フォームは送信時にコントロールクラスのメソッドを呼び出し、チェックのためにモデルに送信されます。

私はコントローラーのロジックが正しいと信じているので、モデルクラス内のメソッドに問題があると思います。

function validate()
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $query = $this->db->get('membership');

    return $query;  
}

ブール値のように、$queryがtrueまたはfalseを返すことを期待していました。代わりに、入力されたデータがデータベース内のデータと一致するかどうか、または完全に間違っているかどうかに関係なく、その出力が真であるように見えます。以下は、コントローラークラスのメソッドです。

function validate_credentials()
{       
    $this->form_validation->set_rules('username', 'username', 'required');
    $this->form_validation->set_rules('password', 'password', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $this->createAdminForm();
    }
    else
    {
        $this->load->model('admin_Model');

        $query = $this->admin_Model->validate();

        if($query)
        {
            redirect('pages');
        }
        else // incorrect username or password
        {
            $this->createAdminForm();
        }
    }
}
4

2 に答える 2

1

私は別の方法を使用していますが、より明確だと思います:

public function login(){


        if($this->input->post('login')){

            $this->form_validation->set_rules('username', 'Username', 'required|callback_valid_login');
            $this->form_validation->set_rules('password', 'Password', 'required|callback_valid_password');

            if($this->form_validation->run($this)){
                $user = $this->user_model->get_by_field('username', $this->input->post('username'));

                $this->session->set_userdata($user);

                redirect("pages");
            } else {
                $this->load->view('login_failed');
            }
        } else
            $this->load->view('login');
    }
于 2013-02-22T08:46:42.467 に答える
0

私自身の答えを見つけ、validate() メソッドをこれに変更しました

function validate()
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $query = $this->db->get('membership');

    if($query->num_rows != 0)
    {
        $validate=true;
        return $validate;
    }
}
于 2013-02-21T22:09:15.617 に答える