登录系统不起作用,我无法运行表单提交!笨

时间:2013-10-22 19:29:27

标签: php codeigniter authentication

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

  

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

我正在观看使用div而不是使用CI的预定义功能的朋友的形式,它有效!

1 个答案:

答案 0 :(得分: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();

Read more about active record.

此外,在view使用

echo form_open('login/auth');

而不是

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

Read more about form helper.

顺便说一句,你可以使用

return $query->num_rows();

而不是

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

这是因为,在您的控制器中,if($query)评估为true,如果评分大于0,否则评分为false(如果是0 })。