Ошибка базы данных - PullRequest
       6

Ошибка базы данных

0 голосов
/ 16 февраля 2019

У меня есть записи в базе данных для разных имен пользователей и паролей.Имя базы данных - «admin», а имя таблицы - «users».Я чувствую, что у меня есть все необходимое, чтобы сказать мне, успешно ли пользователь вошел в систему или нет, но, похоже, это не работает.Одна из учетных записей в этой базе данных имеет имя пользователя «test» и пароль «test».Даже когда я ввожу правильную учетную запись, это все еще терпит неудачу.Есть ли что-то, чего я пропускаю или не замечаю?

страница login.php:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>

<body>
<h1>Login Page</h1>

<form action="confirm.php" method="POST">
    <p>
        <label>Username:</label>
        <input type="text" id="user" name="user"/>
    </p>
    <p>
        <label>Password:</label>
        <input type="password" id="pass" name="pass"/>
    </p>
    <p>
        <input type="submit" id="btn" value="Login"/>
    </p>
</form>

</body>
</html>

страница verify.php:

<?php

//Get values passed in from form in login.php file
$username = $_POST['user'];
$password = $_POST['pass'];

$username = stripcslashes($username);
$password = stripcslashes($password);
$username = mysqli_real_escape_string($username);
$password = mysqli_real_escape_string($password);

$conn = new mysqli("localhost", "root", "root", "admin");
if ($conn->connect_error) {
die('Connect Error (' . $conn->connect_errno . ') ' . $conn-     >connect_error);
}
$result = $conn->query("SELECT * FROM users where     username =     '$username' and password = '$password'")
or die ("Failed to query database "     .$conn->error);
if ($row = $result->fetch_array()) {
echo "login success!!! Welcome " .$row['username'];
} 
else {
echo "Failed to login!";
}

?>

1 Ответ

0 голосов
/ 16 февраля 2019

Ваша проблема в том, что вы не сохраняете соединение, возвращенное из mysqli_connect, и не используете его при последующих вызовах функций mysqli.Использование формы ООП этих функций делает это намного более очевидным.Попробуйте что-то вроде этого:

$conn = new mysqli("localhost", "root", "", "admin");
if ($conn->connect_error) {
    die('Connect Error (' . $conn->connect_errno . ') ' . $conn->connect_error);
}
$result = $conn->query("SELECT * FROM users where     username = '$username' and password = '$password'")
or die ("Failed to query database "     .$conn->error);
if ($row = $result->fetch_array()) {
    echo "login success!!! Welcome " .$row['username'];
} 
else {
    echo "Failed to login!";
}

Ваша следующая проблема будет в том, что вы уязвимы для внедрения SQL.Чтобы избежать этого, вам нужно будет использовать подготовленные заявления. Этот вопрос имеет действительно хорошее объяснение того, как это сделать, и вы также можете посмотреть страницу руководства PHP для подготовленных MySQLi операторов здесь .

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