0

パスワード-ユーザー名認証を設計するために、テーブル(メンバーシップ)から「salt」を取得してパスワードに追加しようとしました。次に、SHA256で組み合わせを暗号化しました。しかし、以下のようにvalidate()関数を作成すると、エラーが発生しました。

重大度:4096

メッセージ:クラスCI_DB_mysql_driverのオブジェクトを文字列に変換できませんでした

コード:

public function validate(){

  $this->db->where('username',$this->input->post('username'));
  $salt=(string)$this->db->select('salt');
  $this->db->where('password',hash('sha256',$this->input->post('password').$salt));
  $query=$this->db->get('membership');

  if($query->num_rows()==1){ return TRUE; }
}

問題を解決する方法は?codeigniter2.1.2を使用しています。どうもありがとう!

4

1 に答える 1

0

2つの別々のクエリを作成する必要があります。

public function validate(){

    $this->db->select('salt');
    $this->db->where('username', $this->input->post('username', TRUE));
    $salt = (string) $this->db->get('membership')->row()->salt;

    $this->db->where('password', 
                    hash('sha256', $this->input->post('password', TRUE). $salt));
    $query=$this->db->get('membership'); 

    if($query->num_rows()==1) { 
         return TRUE; 
    }
    return FALSE;
}
于 2012-08-28T15:01:26.160 に答える