两个变量都是未定义的($ 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;
}
答案 0 :(得分:2)
这两条线有一个迹象:
$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;
}
要使用类似PDO的方法as per the CI docs,您应该这样做:
public function login() {
$query = $this->db->query(
'SELECT * FROM usuario WHERE login = ? AND senha = ?',
array($this->usuario, $this->senha)
)
$query = $query->result();
return $query;
}
这将为您提供包含转义用户值的更安全的查询。