@samuser
programmer

Как правильно изменить данные пользователя(пароль) в базе php mysql?

Функция правильно работает.
public function update($id,$username,$email,$gender,$rol,$pass, $datetime){
            $up = "UPDATE user SET username='$username', upass=MD5('$pass'), email='$email', rolу=$rol, pol='$gender', date='$datetime' WHERE id=".$id;
            return mysqli_query($this->db,$up) or die(mysqli_connect_errno()."Data cannot inserted"); 
        }

Есть форма для изменение данных пользователя с выводам из базы.
<input type="password" name="pass" value="<?php echo $d['pass']; ?>"

В Поле пароля выводиться в пароль измененном формате(MD5) т.е. длинный.
Когда я не изменяя пароль проста нажимаю кнопку(обновит) , этот длинные пароль отправляется в функцию и повторно сохраняется .
Вопрос как правильно обновить пароль чтобы когда я изменяю обновился не изменил осталься не измененным ?
  • Вопрос задан
  • 530 просмотров
Пригласить эксперта
Ответы на вопрос 2
leni_m
@leni_m
ЧупаКобрус
дело в том что расшифровать MD5 обратно нельзя, а в переменной $d['pass'] у вас видимо и храниться он именно в MD5, а не обычный пароль. Так вот кнопка получает это ваш длинный пароль, и при обновлении, снова шифрует его в MD5 и получается как-бы MD5(MD5($pass)) и так далее.
Ответ написан
Комментировать
DaFive
@DaFive
Вообще правильно сказал leni_m, в input не надо передавать значение md5. Его нужно изменять в базе, если из формы пришёл пароль (в принципе не пустой), md5-хэш которого не равен текущему из базы. Если я не хочу менять пароль - поле оставляю пустым.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы