where 句を 2 回実行する必要はありません。
public function login(){
try
{
$user = $this->db->select()->where()->get(); // mysql query
if( !$user)
throw new Exception("User not found!");
if( !$this->compare_password($this->input->post('password'), $user->password ) )
throw new Exception("Passwords did not match!");
}
catch(Exception $e)
{
$this->session->set_flashdata('error', $e->getMessage());
log_message('error', $e->getMessage());
redirect('/');
}
//we got this far so everything should be OK
$this->session->set_flashdata('success', 'Login Successfull');
redirect('dashboard');
}
注:プロダクション モードでは、これよりも優れたパスワード ハッシュ アルゴリズムを使用することをお勧めします。
protected function hash_password($password){
return sha1( $pw . $this->config->item('encryption_key') );
}
protected function compare_password($pw, $dbpw){
return ( sha1($pw . $this->config->item('encryption_key') ) === $dbpw )
}