ログインしたユーザーのパスワードの変更方法を教えてください データベース内のすべてのユーザーと一致するパスワードを入力するとパスワードを変更できます。 例として、ユーザーには「admin」パスワードがあります。現在のパスワード、 新しいパスワードとパスワードを確認するだけです。Codeigniter:ログインしたユーザーのパスワードとmd5を使用するパスワードの変更
現在のパスワード:管理者 新しいパスワード:newadmin 現在のパスワード:新しい管理
とパスワード はMD5を使用している場合にも、私はパスワードを変更する方法がわかりません()。あなたが私を助けてくれることを願っています。私はCodeigniterの初心者です。 私は答えを検索しますが、私は本当にそれを理解していないので、私はコメントしたいですが、 それは50の評判が必要ですので、私は新しい質問を投稿します。ここで
は私のコードです:
コントローラ
public function update(){
$this->form_validation->set_rules('password', 'Current Password', 'required|alpha_numeric|min_length[6]|max_length[20]');
$this->form_validation->set_rules('newpass', 'New Password', 'required|alpha_numeric|min_length[6]|max_length[20]');
$this->form_validation->set_rules('confpassword', 'Confirm Password', 'required|alpha_numeric|min_length[6]|max_length[20]');
if($this->form_validation->run()){
$cur_password = $this->input->post('password');
$new_password = $this->input->post('newpass');
$conf_password = $this->input->post('confpassword');
$this->load->model('queries');
$userid = '1';
$passwd = $this->queries->getCurrPassword($userid);
if($passwd->password == $cur_password){
if($new_password == $conf_password){
if($this->queries->updatePassword($new_password, $userid)){
echo 'Password updated successfully';
}
else{
echo 'Failed to update password';
}
}
else{
echo 'New password & Confirm password is not matching';
}
}
else{
echo'Sorry! Current password is not matching';
}
}
else{
echo validation_errors();
}
モデル
public function getCurrPassword($userid){
$query = $this->db->where(['id'=>$userid])
->get('users');
if($query->num_rows() > 0){
return $query->row();
} }
public function updatePassword($new_password, $userid){
$data = array(
'password'=> $new_password
);
return $this->db->where('id', $userid)
->update('users', $data); }
は、データベースにmd5として保存されたパスワードデータですか? – sintakonte
@sintakonteはい、そうです。 – squaredsquared
PHPでは 'password_hash'と' password_verify'を使います。解説:ハッシュ関数を使用するだけでパスワードベリファイアを保存するだけでは不十分で、単に塩を追加するだけでセキュリティを向上させることはほとんどありません。代わりに、約100msの間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存します。 PBKDF2、Rfc2898DeriveBytes、password_hash、Bcrypt、passlib.hashなどの関数を使用してください。要点は、攻撃者が無差別にパスワードを見つけるのにかなりの時間を費やすようにすることです。 – zaph