Я пытаюсь сделать запрос на сброс пароля в PHP.Это не создание токенов для базы данных.Кто-нибудь может мне помочь? - PullRequest
0 голосов
/ 02 июля 2019

Я настраиваю функцию сброса пароля.Мне нужно, чтобы он подключился к моей базе данных и использовал токены для сброса пароля.Я получил работу с электронной почтой, но когда я пытаюсь изменить свой пароль, он говорит, что мне нужно повторить его.Мне кажется, что он не создает токены в базе данных.Мне было интересно, что я сделал не так?

Я использую 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();

Я бычтобы функция работала, а не выдавала ошибку Вам необходимо повторно отправить запрос на сброс.

...