1

我无法对我的登录进行身份验证,我不知道为什么,我的表单也没有“提交”!

控制器登录.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();
?>        

我在看一个朋友的表格,他使用 div 而不是使用 CI 的预定义函数,它起作用了!

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)将评估true是否存在比0其他情况更严重的情况false(如果是0)。

于 2013-10-22T20:25:33.383 回答