У меня есть некоторые MySQL проблемы, и я очень запутался, поскольку это кажется невозможным. В любом случае, когда я пытаюсь войти в систему, когда я ввожу правильный пароль, меня высылают на экран, который говорит, что имя пользователя / пароль неверны.
По сути, моя база данных выглядит так:
USERNAME PASSWORD EMAIL
Xp10d3 Password12345 xp10d3@gmail.com
IiBlurBeriI Password33333 iiblurberii@gmail.com
Я хочу проверить, вводил ли пользователь свое имя пользователя и совпадает ли пароль, но я не совсем понимаю, как это сделать. Я получил некоторую помощь в создании кода, но, похоже, он не работает, поскольку любое имя пользователя может быть введено ДО того, как оно будет подтверждено (проверено в электронной почте пользователя), и после того, как они введут его, пароль не должен совпадать. Ex. ЧТО ХОЧУ: Пользователь вводит имя пользователя Xp10d3. Пользователь вводит пароль Password1111. Есть сообщение об ошибке, говорящее, что пароль не совпадает. Затем пользователь вводит пароль Password12345. Это допустимо и устанавливает переменную $ _SESSION в их имя пользователя. ЧТО ПРОИСХОДИТ СЕЙЧАС: Пользователь вводит Xp10d3, который находится в базе данных. Пароль, который они вводят, это Password12345, который является правильным, и они отправляются на экран, который говорит, что их пароль неправильный.
Я провел некоторое тестирование и зарегистрировал все переменные. Все сводилось к тому, что $row["PASSWORD"]
было неверно. Как это исправить?
Некоторые важные замечания: Переменная $_SESSION['password_not']
не является хешированным паролем. Однако все остальные переменные, которые я получаю, за исключением этой переменной и переменной $password
, хэшируются.
Список переменных, которые НЕ хэшируются:
$_SESSION['password_not']
$password
Переменные, которые хэшированы:
$row["PASSWORD"]
Any passwords in the database
Код: login_check_update. php:
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
text-align: center;
font-family: sans-serif;
}
a {
text-decoration: none;
color: blue;
}
#logout {
margin: 0 auto;
text-align: center;
border: 1px solid;
border-radius: 5px;
max-width:1024px;;
height: 800px;
}
</style>
</head>
<body>
<div id="logout">
<?php
session_start();
/* Sends an email to the user and adds the special key to another database */
$username = $_GET['username']; /* Gets the username that was submitted in the HTML form. */
$password = $_GET['password']; /* Gets the password that was submitted in the HTML form. */
$servername = "localhost"; /* MySQL database. Change if needed! Most of the time its not localhost unless you're hosting on your computer. */
$user = 'xxx'; /* MySQL username. Change if needed. */
$pass = 'xxx'; /* MySQL password. Change if needed. */
$dbname = 'vibemcform'; /* MySQL database name. Change if needed. */
$bytes = random_bytes(10); /* Randomized code */
$key = bin2hex($bytes); /* Makes the randomized code */
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$link = "live.php";
$con = new mysqli($servername, $user, $pass, $dbname); /* Connects to the database */
$query = "SELECT USERNAME FROM data WHERE USERNAME = '".$username."'";
$result = $con->query($query);
$row = $result->fetch_assoc();
$selectTwo = "SELECT PASSWORD FROM data WHERE PASSWORD = '".$password."'";
$result2 = $con->query($selectTwo);
$row2 = $result->fetch_assoc();
/* Delete after */
$test = $row["USERNAME"];
$testTwo = password_verify($_SESSION['password_not'], $row["PASSWORD"]);
if ($username == $row["USERNAME"] && password_verify($_SESSION['password_not'], $row["PASSWORD"])) {
echo "Found data in the database! Visit the chat!";
echo "<form action='live.php' method='post'><a href='".$link."'><input type='submit' name='btn1' value='$username'/></a></form>";
echo "Session ID: ". session_id() . ". ";
} else {
echo "Username not found/password incorrect. Please try again!";
}
$conn = null;
exit;
?>
<a href="index.html">Home</a>
</div>
</body>
</html>