Я настраиваю функцию сброса пароля.Мне нужно, чтобы он подключился к моей базе данных и использовал токены для сброса пароля.Я получил работу с электронной почтой, но когда я пытаюсь изменить свой пароль, он говорит, что мне нужно повторить его.Мне кажется, что он не создает токены в базе данных.Мне было интересно, что я сделал не так?
Я использую PHP 7. Я попытался посмотреть на мой синтаксис и посмотрел видео на YouTube о том, как это делается.Я пытаюсь понять, почему это не работает.У меня все это на чертовом сервере.
Это в моем файле reset-password.inc.php
$userEmail = $_POST["email"];
$sql = "DELETE FROM pwdReset WHERE pwdResetEmail=?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "There was an error!";
exit();
} else {
mysqli_stmt_bind_param($stmt, "s", $userEmail);
mysqli_stmt_execute($stmt);
}
$sql = "INSERT INTO pwdReset (pwdResetEmail, pwdResetSelector,
pwdResetToken, pwdResetExpires) VALUES (?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "There was an error!";
exit();
} else {
$hashedToken = password_hash($token, PASSWORD_DEFAULT);
mysqli_stmt_bind_param($stmt, "ssss", $userEmail, $selector,
$hashedtoken, $expires);
mysqli_stmt_execute($stmt);
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
Это в моем файле reset-request.inc.php
$sql = "SELECT * FROM pwdReset WHERE pwdResetSelector=? AND
pwdResetExpires >= $currentDate";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "There was an error!";
exit();
} else {
mysqli_stmt_bind_param($stmt, "s", $selector);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if (!$row = mysqli_fetch_assoc($result)) {
echo "You need to re-submit your reset request.";
exit();
} else {
$tokenBin = hex2bin($validator);
$tokenCheck = password_verify($tokenBin, $row["pwdResetToken"]);
if ($tokenCheck === false) {
echo "You need to re-submit your reset request.";
exit();
} elseif ($tokenCheck === true) {
$tokenEmail = $row['pwdResetEmail'];
$sql = "SELECT * FROM users WHERE emailUsers=?;";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "There was an error!";
exit();
} else {
mysqli_stmt_bin_param($stmt, "s", $tokenEmail);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if (!$row = mysqli_fetch_assoc($result)) {
echo "There was an error!";
exit();
Я бычтобы функция работала, а не выдавала ошибку Вам необходимо повторно отправить запрос на сброс.