我在数据库中有关于不同帐户用户名和密码的记录。数据库名称为“ 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!";
}
?>
答案 0 :(得分:0)
您的问题是您没有保存从execute
返回的连接,而没有在随后的mysqli函数调用中使用该连接。使用这些功能的OOP形式使其更加明显。尝试这样的事情:
mysqli_connect
您的下一个问题将是您容易受到SQL注入的攻击。为避免这种情况,您将需要使用准备好的语句。 This question很好地说明了如何执行此操作,您还可以查看PHP手册页,了解MySQLi准备的语句here。