无法登录它显示找不到对象

时间:2017-02-18 14:58:44

标签: codeigniter

管理员/视图/ login.php中

<?php $this->load->library('form_validation'); ?> <?php echo validation_errors(); ?> <?php echo form_open('cpages/ceklogin'); ?> <div class="login-card"> <center><?php //echo $warning; ?> <?php echo $this->session->flashdata('warning'); ?> </center> <h2>Gionda CMS Login</h2><br> <form> <div class="login"><input type="text" name="username" placeholder="Username"></div> <div class="login"><input type="password" name="password" placeholder="Password"></div> <br> <input type="submit" name="login" class="login login-submit" value="login"> </form> <div class="login-help"> <a href="#">Register</a> • <a href="#">Forgot Password</a> </div> </div>

控制器/ Cpages.php

public function ceklogin() {
        $username = $this->input->post('username', TRUE);
        $password = $this->input->post('password', TRUE);
        $this->db->where('username', $username);
        $this->db->where('password', $password);
        $query=$this->db->get('login');
        if ($query->num_rows() >= 1)
             {
                // echo 'LOGIN BERHASIL !';
                $this->load->model('Mpages');
                $data['login']=$this->db->get('login');  
                $data['login']=$this->Mpages->login();
                $this->load->view('index', $data);
             }
        else
            {
                // echo 'LOGIN GAGAL !';
                $this->session->set_flashdata('warning', 'Your username and password are wrong !');
                //$data['warning']='Your username and password are wrong !';
                $this->load->view('login');
            }           
    } 

模型/ Mpages.php

public function login()
    {
        $query = $this->db->get('login');
        return $query->result();
    }

用户名电子邮件密码角色

user user@mail.com 12345管理员 user2 user2@mail.com $ 2y $ 10 $ PrDTzzETQ.NzI9eIN0WYDubhBZhkg9XEo10MxRYpv4M经理

我尝试使用用户名:用户密码:12345登录,但尚未成功登录。我想知道为什么?

http://localhost/masterlinkci2/cpages/ceklogin

找不到对象!

在此服务器上找不到请求的URL。引用页面上的链接似乎是错误的或过时的。请告知该页面的作者有关错误的信息。

如果您认为这是服务器错误,请与网站管理员联系。

我想知道如何路线:

routes.php文件

 $route['default_controller'] = 'cpages/login';
    $route['cpages/login'] = 'cpages/login';

2 个答案:

答案 0 :(得分:0)

无需调用模型方法。您可以在控制器上获取表数据。请尝试这样..

public function ceklogin() {
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $this->db->where('username', $username);
        $this->db->where('password', $password);
        $query=$this->db->get('login');
        if ($query->num_rows() >= 1)
             {
                // echo 'LOGIN BERHASIL !';
                $data['login']=$query->result();  //returns data in object format
                $this->load->view('index', $data);
             }
        else
            {
                // echo 'LOGIN GAGAL !';
                $this->session->set_flashdata('warning', 'Your username and password are wrong !');
                //$data['warning']='Your username and password are wrong !';
                $this->load->view('login');
            }           
    } 

在您的视图中使用foreach循环获取数据。就像这个..

foreach($login as $l)
{
echo $l->username."<br/>";
echo $l->password;
so on..
}

答案 1 :(得分:0)

这是一个如何在模型中完成我的示例

我认为你使用的是PHP哈希

创建哈希http://php.net/manual/en/function.password-hash.php

然后您需要验证它http://php.net/manual/en/function.password-verify.php

[(v, k) for k,v in enumerate(li)]

我是我的自我,我自动加载了我的模型,但你不必

 public function validate_password($username, $password) {
    // Get the stored password from DB
    $stored_password = $this->get_this_users_password($username);

    if (password_verify($password, $stored_password)) {
        return TRUE;
    } else {
        return FALSE;
    }
}

模型

文件名:User_model.php首字母大写只有大写。

$autoload['libraries'] = array('database', 'session');

$autoload['model'] = array('user/user_model');

控制器功能示例

  

您在控制器上加载库和助手等,而不是在视图上,

<?php

class User_model extends CI_Model {

    public $table_name = 'user';

    private $user_id;
    private $username;
    private $firstname;
    private $lastname;
    private $email;

    public function __construct() {
        parent::__construct();

        if ($this->session->userdata('user_id')) {

            $this->db->select('user_id, username, firstname, lastname, email, date_joined');
            $this->db->from($this->db->dbprefix . $this->table_name);
            $this->db->where('user_id', $this->session->userdata('user_id'));
            $this->db->where('status', '1');
            $user_query = $this->db->get();

            if ($user_query->num_rows() == 1) {

                $this->user_id = $user_query->row()->user_id;
                $this->username = $user_query->row()->username;
                $this->firstname = $user_query->row()->firstname;
                $this->lastname = $user_query->row()->lastname;
                $this->email = $user_query->row()->email;
            }

        } else {
            $this->logout();
        }
    }

    public function logout() {
        unset($_SESSION['user_id']);

        $this->user_id = '';
        $this->username = '';
        $this->firstname = '';
        $this->lastname = '';
        $this->email = '';
    }

    public function login($username, $password) {
        if ($this->validate_password($username, $password)) {
            $this->db->select('user_id, username, firstname, lastname, email, date_joined');
            $this->db->from($this->db->dbprefix . $this->table_name);
            $user_query = $this->db->get();

            if ($user_query->num_rows() == 1) {

                $this->session->set_userdata('user_id', $user_query->row()->user_id);

                $this->user_id = $user_query->row()->user_id;
                $this->username = $user_query->row()->username;
                $this->firstname = $user_query->row()->firstname;
                $this->lastname = $user_query->row()->lastname;
                $this->email = $user_query->row()->email;

                return TRUE;
            } else {
                return FALSE;
            }

        }
    } 

    public function validate_password($username, $password) {
        $stored_password = $this->get_this_users_password($username);

        if (password_verify($password, $stored_password)) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    public function get_this_users_password($username) {
        $this->db->where('username', $username);
        $query = $this->db->get($this->db->dbprefix . $this->table_name);

        return $query->row()->password;
    }

    public function get_this_users_id() {
        return $this->user_id;
    }

    public function get_this_users_username() {
        return $this->username;
    }

    public function get_this_users_firstname() {
        return $this->firstname;
    }

    public function get_this_users_lastname() {
        return $this->lastname;
    }

    public function get_this_users_email() {
        return $this->email;
    }
}