登录错误密码和用户名组合

axzmvihb  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(362)
<?php
session_start();

$db =mysqli_connect("localhost", "root", "","registration" );
if (isset($_POST['login_btn'])){
    $username = mysql_real_escape_string($_POST ['username']);
    $password = mysql_real_escape_string($_POST ['password']);

    $password= md5($password);
    $sql = "SELECT * FROM users WHERE username= '$username' AND password= '$password'";
    $result = mysqli_query($db, $sql);
if(mysqli_num_rows($result) == 1 ){
$_SESSION['message']= "You are now logged in";
$_SESSION['username'] = $username;

header("Location: home.php");
}else{
    $_SESSION['message'] = "Username and  password combination is incorrect";
}

}
?>

<html>
<head>

</head>
<body>
<div class="header"> <h1>login</h1></div>

<?php
if (isset($_SESSION['message'])){
    echo "<div id = 'error_msg>".$_SESSION['message']."</div>";
    unset($_SESSION['message']);
}
?>

<form method="post" name="loginform" action="login.php">
    <table>
        <tr>
            <td> Username:</td>
            <td><input type = "text" name="username" placeholder="Username" class="textInput"  required></td>
        </tr>

        <tr>
            <td> Password:</td>
            <td><input type = "password" placeholder="Password"  name="password" class="textInput" required></td>
        </tr>

        <tr>
            <td></td>
            <td><input type = "submit" name="login_btn" value="Login"></td>
        </tr>
    </table>
</form>
</body>

</html>

大家好,这是我用php登录的页面。除了登录之外,它还允许使用不同的密码。根据代码设置,它将检查两个密码是否匹配,如果不匹配,它将显示一个错误。
即使两个密码不匹配,这个也不会显示错误。为什么它允许用户用错误的密码登录??
我希望它显示一个错误时,密码不匹配,作为回报,不允许登录,因为错误的凭据。

pbossiut

pbossiut1#

你没有使用 mysql_real_escape_string 适当地。你应该用其中一个 mysqli_real_escape_string 或使用 mysql_connect 连接到mysql。 mysql_real_escape_string 的第二个参数将自动假定为 mysql_connect 是用的,但你用的是 mysqli_connect 相反,这就是为什么它找不到任何联系。
pph网站上写道:
mysql连接。如果未指定链接标识符,则 mysql_connect() 假设为。如果找不到这样的链接,它将尝试创建一个 mysql_connect() 被毫无争议地叫来。如果没有找到或建立连接,则 E_WARNING 产生电平误差。
参考文献:http://php.net/manual/en/function.mysql-real-escape-string.php
尝试改变

$username = mysql_real_escape_string($_POST ['username']);
 $password = mysql_real_escape_string($_POST ['password']);

$username = mysqli_real_escape_string($db, $_POST ['username']);
$password = mysqli_real_escape_string($db, $_POST ['password']);

相关问题