1
ユーザログインを構築しようとしています。Codeigniterのクエリのmd5パスワードとユーザログインの比較
md5パスワードを除いて、すべてが完璧に機能しています。
基本的には、有効な電子メールと必須フィールドの検証を行うフォームがあり、フォームに入力されたユーザーの詳細をデータベースのものと比較するカスタムコールバック検証ルールを作成しました。何も詳細が見つからない場合は、ルールは、それらが発見された場合、ユーザーがログインされ、FALSEを返し
ここでの機能は私のコントローラでチェックルールのためです:。
public function user_pass_check()
{
$db_users = $this->load->database('users', TRUE);
$post_email = $this->input->post('email', TRUE);
$post_password = $this->input->post('password', TRUE);
$query = $db_users->query("SELECT id, email, password FROM useraccounts WHERE `email`='$post_email' AND `password`=md5('$post_password')");
$result = $query->num_rows();
if ($result == 0)
{
$this->form_validation->set_message('user_pass_check', 'Login failed! Please check your login details.');
return FALSE;
}
else
{
// Session cookie creation goes here //
return TRUE;
}
}
私はエラーを取得します私は試してログインします。データベースのパスワードがmd5でなく、クエリの$ post_passwordの周りのmd5()を削除すると、これは完全に動作します。ナチュラルに私はパスワードをmd5にしたい、私は自分のデータベースにパスワードを公開することはできません。
$this->form_validation->set_rules('email', 'email address', 'trim|required|valid_email|callback_user_pass_check');
$this->form_validation->set_rules('password', 'password', 'trim|required|md5|callback_user_pass_check');
任意のアイデア:
また、ここではフォームの検証のためのルールですか?
は、データベースにmd5として保存されたパスワードです。 –
はい、それはmd5パスワードです。 –
'$ post_password = md5($ this-> input-> post( 'password'、TRUE));'私は思っています(クエリからmd5を削除してください) – danneth