<?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登录的页面。除了登录之外,它还允许使用不同的密码。根据代码设置,它将检查两个密码是否匹配,如果不匹配,它将显示一个错误。
即使两个密码不匹配,这个也不会显示错误。为什么它允许用户用错误的密码登录??
我希望它显示一个错误时,密码不匹配,作为回报,不允许登录,因为错误的凭据。
1条答案
按热度按时间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
尝试改变
到