簡體   English   中英

未定義的變量[CodeIgniter]

[英]Undefined variable [CodeIgniter]

這兩個變量都是不確定的($ usuario和$ senha):(

該代碼應該進行登錄,但是模型未接收到變量

控制者

public function login(){

    $this->load->model('Usuario_model');
    $this->Usuario_model->usuario = $this->input->post('usuario');
    $this->Usuario_model->senha = sha1($this->input->post('senha'));
    $dados = $this->Usuario_model->login();
    foreach($dados AS $row){
        $level = $row->level;
        $usuario = $row->login;
    }
    if(($dados)){
        $newdata = array(
           'usuario'  => "$usuario",
           'level'     => $level,
           'logged_in' => TRUE
       );
         $this->session->set_userdata($newdata);
         $session = $this->session->all_userdata();  
       redirect("index.php/voe/index");
    }
}

模型

public function login(){ 

        $query = $this->db->query("SELECT * FROM usuario WHERE login = '$usuario' AND senha = '$senha'");
        $query = $query->result();
         return $query;
    }

從這兩行可以看出:

$this->Usuario_model->usuario = $this->input->post('usuario');
$this->Usuario_model->senha = sha1($this->input->post('senha'));

您已經訪問並存儲了Usuario-model內部的變量,但是login()函數試圖訪問函數范圍內的變量,而不是模型范圍內的變量。 使用$this->將允許您訪問函數所在類的私有,公共或受保護的變量。請確保嘗試:

public function login(){ 
    $query = $this->db->query("SELECT * FROM usuario WHERE login = '".$this->usuario."' AND senha = '".$this->senha."'");
    $query = $query->result();
    return $query;
}

根據CI文檔使用類似PDO的方法,您應該執行以下操作:

public function login() {
    $query = $this->db->query(
        'SELECT * FROM usuario WHERE login = ? AND senha = ?',
        array($this->usuario, $this->senha)
    )
    $query = $query->result();
    return $query;
}

這將為您提供更安全的轉義用戶值查詢。

暫無
暫無

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

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