1

ログインの認証ができません。理由がわかりません。また、フォームが「送信」されません。

コントローラー login.php

<?php 


    class Login extends CI_Controller
    {



        public function index(){

            $this->load->view('admin/login');

        }

        public function auth(){

            //Model User

            $this->load->model('user_model');

            //Post

            $login = $this->input->post('username');
            $senha = $this->input->post('password');

            $query = $this->user_model->validate($login, $senha);


            if($query){

                    $data = array(
                        'username' => $this->input->post('username'),
                        'logged' => true
                    );

                    $this->session->userdata($data);

                    redirect('admin/index');
                }else{
                    redirect('admin/ease');
                    $this->session->set_flashdata('error_login', 'You dont have permission for access this area! Please, contact the support!');    
                }       

        }

    }

?>

モデル user_model.php

<?php   

    class User_model extends CI_Model
    {

        public function validate($login, $password){

                $this->db->where('username',$login);
                $this->db->where('password',$password);
                $this->db->where('status','1');
                $query = $this->db->get('usuario');

                if($query->num_rows == 1){
                    return true;
                }else{
                    return false;
                }
        }   

        //Verifica se o Usuario está logado
        public function logged(){

            $logged = $this->session->userdata('logged');

            if(!isset($logged) || $logged != true){
                echo 'Voce nao tem permissao para entrar nessa pagina. <a href="http://localhost/curriculo/login">Efetuar Login</a>';
                die();
            }

        }

    }

?>

login.php を表示

<?php 
        echo form_open(site_url('login/auth'));

        echo "<br>";
        echo "<br>";
        echo form_label('Username', 'username');
        echo form_input('username', '');
        echo "<br>";
        echo form_label('Password', 'password');
        echo form_password('password', '');
        echo "<br>";
        echo form_submit('submit', 'Login');

        echo $this->session->flashdata('error_login');

        form_close();
?>        

CI の定義済み関数を使用する代わりに div を使用する友人のフォームを見ていましたが、うまくいきました!

4

1 に答える 1

1

あなたのUser_model/validate方法では、

if($query->num_rows == 1){ ... } // $query->num_rows is a method not property

そのはず

if ($query->num_rows() > 0) { ... } // or if($query->num_rows())

また、あなたは持っています

$this->db->where('username',$login);
$this->db->where('password',$password);
$this->db->where('status','1');
$query = $this->db->get('usuario');

あなたは使用することができます

$where = array('username' => $login, 'password' => $password, 'status' => 1);
$query = $this->db->get_where('usuario', $where);

また、使用できます

$where = array(...);
$this->db->select('username, password');
$this->db->from('usuario');
$this->db->where($where);
$query=$this->db->get();

アクティブ レコードの詳細については、こちらをご覧ください。

また、ごview利用にあたって

echo form_open('login/auth');

それ以外の

echo form_open(site_url('login/auth'));

フォーム ヘルパーの詳細を参照してください。

ところで、使用できます

return $query->num_rows();

それ以外の

if($query->num_rows() == 1){
    return true;
}else{
    return false;
}

これは、コントローラーで、よりも大きい場合にif($query)評価されるためです(それが の場合)。true0false0

于 2013-10-22T20:25:33.383 に答える