Je veux demander comment changer le mot de passe pour l'utilisateur connecté, Je peux changer le mot de passe quand j'entre le mot de passe qui correspond à n'importe qui dans la base de données. Pour exemple, l'utilisateur a "admin" mot de passe, je viens d'entrer le mot de passe actuel, nouveau mot de passe et confirmer le mot de passe.Codeigniter: Changer le mot de passe pour l'utilisateur connecté et pour le mot de passe qui utilise md5
Mot de passe actuel: admin nouveau mot de passe: Mot de passe NewAdmin actuel: nouvelle administration
Et aussi je ne sais pas comment changer le mot de passe si le mot de passe utilise md5(). J'espère que vous pouvez m'aider, je suis un débutant sur Codeigniter. Je recherche des réponses, mais je ne comprends vraiment pas, donc je veux commenter, mais il est nécessaire 50 réputation donc je poster une nouvelle question.
Voici mon code:
Contrôleur
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();
}
modèle
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); }
Vos données de mot de passe sont-elles stockées en tant que md5 dans votre db? – sintakonte
@sintakonte Oui, c'est le cas. – squaredsquared
Avec PHP, utilisez 'password_hash' et' password_verify'. Discussion: Lors de l'enregistrement d'un vérificateur de mot de passe, il suffit d'utiliser une fonction de hachage et il suffit d'ajouter un sel pour améliorer la sécurité. Au lieu de itérer sur un HMAC avec un sel aléatoire pour une durée d'environ 100ms et enregistrer le sel avec le hachage. Utilisez une fonction telle que PBKDF2, Rfc2898DeriveBytes, password_hash, Bcrypt, passlib.hash ou des fonctions similaires. Le but est que l'attaquant passe beaucoup de temps à trouver des mots de passe par force brute. – zaph