簡體   English   中英

Codeigniter錯誤選擇查詢無法檢查用戶輸入

[英]Codeigniter error select query fails to check user input

我是Codeigniter的新手,正在使用3.1.5版本。 以下是我的用戶登錄功能。

class Auth extends CI_Controller
{
    public function login()
    {
        // Load Login View
        $this->load->view('login');
        // validate form
        $this->form_validation->set_rules('username','Username','required');
        $this->form_validation->set_rules('password','Password','required|min_length[5]');
        if($this->form_validation->run()== true){
            $username = $_POST['username'];
            $password = $_POST['password'];
            // check user in database
            $this->db->select("*");
            $this->db->from("users");
            $this->db->where(array("username"=>$username,"password"=>$password));
            $query = $this->db->get();
            $user_data  = $query->row();
            // check if user exists or not
            if($user_data->username){
                // show temporary success message
                $this->session->set_flashdata("success","User successfully logged in");
                // set temporary sesstion variables
                $_SESSION['user_logged'] = TRUE;
                $_SESSION['username'] = $user_data->username;
            }else{
                $this->session->set_flashdata("error","Invalid username, user not exist");
            }
        }
    }

當我提供用戶名(如用戶名和密碼)時,出現以下錯誤,無法解決。

Severity: Notice

Message: Trying to get property of non-object

Filename: controllers/Auth.php

Line Number: 29

Backtrace:

File: D:\xampp\htdocs\ci315\application\controllers\Auth.php
Line: 29
Function: _error_handler

File: D:\xampp\htdocs\ci315\index.php
Line: 315
Function: require_once

行號29正是從這里開始

      if($user_data->username){
       // show temporary success message
       $this->session->set_flashdata("success","User successfully logged in");
         // set temporary sesstion variables
         $_SESSION['user_logged'] = TRUE;
         $_SESSION['username'] = $user_data->username;
         }else{
         $this->session->set_flashdata("error","Invalid username, user not exist");
         }

如果我評論以上部分,則沒有錯誤。 請建議我在哪里做錯了。 任何幫助將不勝感激,在此先感謝。

在下面的代碼中使用可以正常工作。 使用if($ query-> num_rows()> 0)代替if($ user_data-> username)和$ query-> row()-> username代替$ user_data-> username

class Auth extends CI_Controller
{
    public function login()
    {
        // Load Login View
        $this->load->view('login');
        // validate form
        $this->form_validation->set_rules('username','Username','required');
        $this->form_validation->set_rules('password','Password','required|min_length[5]');
         if($this->form_validation->run()== true){
            $username = $_POST['username'];
            $password = $_POST['password'];
            // check user in database
            $this->db->select("*");
            $this->db->from("users");
            $this->db->where(array("username"=>$username,"password"=>$password));
            $query = $this->db->get();

            if($query->num_rows() > 0){
                // show temporary success message
                $this->session->set_flashdata("success","User successfully logged in");
                // set temporary sesstion variables
                $_SESSION['user_logged'] = TRUE;
                $_SESSION['username'] = $query->row()->username;
            }else{
                $this->session->set_flashdata("error","Invalid username, user not exist");
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM