PHP логин для сайта с ошибкой «неправильный пароль» с правильным паролем - PullRequest
0 голосов
/ 22 мая 2019

Привет пользователю YouTube «mmtuts», потому что это в основном копия его урока (по крайней мере, я кое-что узнал) (https://www.youtube.com/watch?v=LC9GaXkdxF8).

Это моя первая попытка создать сайт с системой входа в систему.

TL; DR: я столкнулся с проблемой, когда с любым пользователем не работают даже правильные пароли (очевидно, пользователь принят, так как у меня была ошибка «неправильный пользователь», то есть пользователь не найден в базе данных, но затем я обнаружил свои ошибки) .

Я управляю своей базой данных, используя MySQL и Apache (используя XAMPP). Я пытался переписать все имена в базе данных и в главном индексе PHP, где находится веб-сайт с модальными входными данными.

      mysqli_stmt_bind_param($stmt, "ss", $mailuid, $mailuid);
      mysqli_stmt_execute($stmt);
      $result = mysqli_stmt_get_result($stmt);
      if ($row = mysqli_fetch_assoc($result)) {
        $pwdCheck = password_verify($password, $row['Password']); <!-- CHECKS IF INSERTED PASSWORD = DATABASE PASSWORD FOR INSERTED USER -->
        if ($pwdCheck == false) { <!-- IF PASSWORD DOESN'T MATCH WITH DATABASE PASSWORD FOR INSERTED USER THEN GO TO THIS "WRONG PASSWORD" ERROR PAGE (KEEPS GOING TO THIS PAGE) -->
          header("Location: ../index.php?error=password_errada1"); 
          exit();
    }
    else if($pwdCheck == true) { <!-- IF THE PASSWORD IS CORRECT THEN OPEN SESSION FOR THE INSERTED USER -->
      session_start();
      $_SESSION['userId'] = $row['idAluno'];
      $_SESSION['userUid'] = $row['NumeroAluno'];
      $_SESSION['userPrimeiroNome'] = $row['PrimeiroNome'];
      $_SESSION['userUltimoNome'] = $row['UltimoNome'];
      $_SESSION['userAno'] = $row['Ano'];
      $_SESSION['userTurma'] = $row['Turma'];
      $_SESSION['userRequisitou'] = $row['Requisitou'];

      header("Location: ../index.php?login=login_sucesso");
      exit();
    }

Искал ответы и пытался исправить это как минимум 1 час. Извините, если мой пост противоречит каким-либо правилам, о которых я не знаю. Я так сделал, потому что знаю такие вещи, что это всегда глупая ошибка.

РЕДАКТИРОВАТЬ 1: Я могу предоставить больше кода, если хотите.

$servername = "localhost";
$dBUsername = "root";
$dBPassword = "";
$dBName = "loginsystem";

$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);

if (!$conn) {
  die("Erro de conexão: ".mysqli_connect_error());
}

Код dbStructure:

CREATE TABLE alunos ( idAluno int (11) NOT NULL, NumeroAluno varchar (7) NOT NULL, Password varchar (50) NOT NULL, Email varchar (50) NOT NULL, PrimeiroNome varchar (25) NOT NULL, UltimoNome varchar (25) NOT NULL, Ano int (2) NOT NULL, Turma varchar (8) NOT NULL, Requisitou int (1) NOT NULL ПО УМОЛЧАНИЮ '0' ) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = latin1;

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

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

Решено это путем создания регистрации, которая создает пользователей с хешированными паролями, чтобы PHP сравнивал HASHED / HASHED, а не HASHED - NASH-HASHED.

Может быть решено также, если нигде не хешировать пароль (небезопасно, но легко).

0 голосов
/ 22 мая 2019

Ваш пароль не хэшируется.

Попробуйте заменить код

if ($pwdCheck == false)

с

if($password != $row['Password'])

Если это работает, перепроверьте свой сценарий, где хэшируется ваш пароль.

Спасибо.

РЕДАКТИРОВАТЬ 1 : Пожалуйста, измените остальное, если часть, а также, и проверьте еще раз. Других ошибок не вижу.

Заменить

else if($pwdCheck == true)

с

else if($password == $row['Password'])

Вероятно, это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...