目前,我的所有用户都可以使用正确的用户名和密码登录到正确的页面,也可以使用不正确的用户名和密码登录。当我为我的结果更改 if 语句时也是如此,即使使用正确的用户名和密码,它也总是打印一条错误消息。
我该如何解决这个问题?我尝试了几个教程,但遇到了同样的问题!
<html>
<head>
</head>
<body>
<form action="test.php" method="post">
Username: <input type="text" name="Username" />
Password: <input type="password" name="Password" />
<input type="submit" value="login"/>
</form>
<?php
session_start();
include('connect-db.php');
if(isset($_POST['Username']) AND isset($_POST['Password'])) {
$username = $_POST['Username'];
$password = $_POST['Password'];
$sql = "SELECT count(Login_ID) FROM users WHERE Username='$username' AND Password = '$password'";
$result = mysql_query($sql);
if($result!= 1) {
echo "Invalid login";
} else {
header("Location:main.php");
}
}
?>
</body>
</html>
最佳答案
首先,不要使用mysql_
函数。它们已被弃用并在 PHP7 中被删除。请改用 PDO 或 mysqli。
对密码使用哈希。像那样将它们存储在数据库中是不安全的。看看password_hash()
同时转义这些值,因为你现在很容易受到 mysql 注入(inject)的攻击。用 mysql_real_escape_string() 逃避他们.然而,这仍然被弃用,所以最好使用 mysqli_real_escape_string() , 但要使用它,你必须对所有内容使用 mysqli_
函数:)
您忘记获取 num_rows :)
$sql = "SELECT * FROM `users` WHERE `Username` = '$username' AND `Password` = '$password'";
$result = mysql_query($sql);
$num_rows = mysql_num_rows($result);
if($num_rows != 1) {
echo "Invalid login";
} else {
header("Location:main.php");
}
关于php - 如何使用 mySQL 在 php 中创建一个简单的登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36404254/