【发布时间】:2013-02-06 21:23:27
【问题描述】:
感谢@Mischa 在这里帮助我。
答案:
型号:
function validate_login($username, $password) {
$bcrypt = new Bcrypt(17);
$sql = "SELECT * FROM users WHERE username = ? ";
$loginQ = $this -> db -> query ($sql, array($username));
$database = $loginQ->row();
$hash = $database->password;
if ($bcrypt -> verify($password, $hash)){
return $loginQ;
}
}
控制器:
function validate_credentials() {
$this -> load -> library('form_validation');
$this -> load -> library('bcrypt');
$this -> form_validation -> set_rules('username', 'Username', 'required|alpha_numeric|min_length[4]|max_length[15]');
$this -> form_validation -> set_rules('password', 'Password', 'required|min_length[7]|alpha_dash|max_length[20]');
if ($this -> form_validation -> run() == FALSE) {
$this -> index();
} else {
$this -> load -> library('bcrypt');
$this -> load -> model('login_model');
$username = $this -> input -> post('username');
$password= $this -> input -> post('password');
if ($loginQ = $this -> login_model -> validate_login($username, $password)) {
if ($activated = $this -> login_model -> activated($username)) {
$session_array = array('username' => $this -> input -> post('username'), 'loggedin' => TRUE);
$this -> session -> set_userdata($session_array);
redirect('staff_controller/index');
} else {
$this -> session -> sess_destroy();
$this -> load -> view('accessdenied_view');
$this -> output -> _display();
die();
}
} else {
$this -> index();
}
}
}
【问题讨论】:
-
只有在将数据传递给视图时,您尝试执行的操作才有效。
-
但是当我 print_r($data);在模型中,我得到一组数据(我的用户名和密码)
-
是的,但您没有在模型中使用
$data。您正在使用未定义的$username和$password。要么将$username和$password传递给 你的模型,要么使用$data['username']和$data['password']in 你的模型。不像你现在正在做的两者兼而有之。 -
为什么要对一个完全合理的问题投反对票? :S
标签: php mysql codeigniter select