Итак, вот в чем дело: я бы хотел, чтобы мои клиенты меняли свой пароль каждые 3 месяца. Это легко.
Но я также хочу, чтобы они выбрали другой пароль, который отличается от предыдущего пароля.
И самое сложное в том, что я храню 4 информации (3 последних пароля и дату последнего изменения пароля) в одной строке БД.
Итак, я устанавливаю row-->old_passwords = date()::psw_1::psw_2::psw_3
И проверка if($POST['password']== psw_1 || $POST['password']== psw_2 || $POST['password']== psw_3)
Но как мне сохранить новый пароль как psw_3, старый — psw_2, а новый psw_1 — в конечном итоге стереть исходный psw_1?
Не беспокойтесь о CWE-257 — пароли, конечно, хэшируются!
Вы должны сделать запрос «ОБНОВЛЕНИЕ», обновляя поля с новыми паролями?
Нечто подобное должно работать, но обязательно защитите от внедрения MySQL.
ТАКЖЕ, как сказал @Fred -ii-, $POST['password']
никогда не сработает, ты должен прочитать о суперглобалах. $_POST['password']
даст вам больше шансов достичь того, что вы пытаетесь сделать;)
$mysql->query("UPDATE tableStoringPwd pwd SET pwd.psw1 = pwd.psw2 , pwd.psw2 = pwd.psw3, pwd.psw3 = '" . $newPwd . "' WHERE userId = ". $userId );
РЕДАКТИРОВАТЬ :
Других решений пока нет …