2012-01-24 11 views
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'); 

任意のアイデア:

また、ここではフォームの検証のためのルールですか?

+0

は、データベースにmd5として保存されたパスワードです。 –

+0

はい、それはmd5パスワードです。 –

+2

'$ post_password = md5($ this-> input-> post( 'password'、TRUE));'私は思っています(クエリからmd5を削除してください) – danneth

答えて

1
$post_password = md5($this->input->post('password', TRUE)); 

ジョブを実行します。

関連する問題