数据库故障

时间:2019-02-16 00:07:12

标签: php html mysql sql

我在数据库中有关于不同帐户用户名和密码的记录。数据库名称为“ 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>

confirm.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 :(得分:0)

您的问题是您没有保存从execute返回的连接,而没有在随后的mysqli函数调用中使用该连接。使用这些功能的OOP形式使其更加明显。尝试这样的事情:

mysqli_connect

您的下一个问题将是您容易受到SQL注入的攻击。为避免这种情况,您将需要使用准备好的语句。 This question很好地说明了如何执行此操作,您还可以查看PHP手册页,了解MySQLi准备的语句here