我有以下表格:
<form method="post" enctype="application/x-www-form-urlencoded" action="logincheck.php" autocomplete="off" >
<table>
<tr>
<td><label for="username">Username</label></td>
<td><input type="text" name="username"></input></td>
</tr>
<tr>
<td><label for="password">Password</label></td>
<td><input name="password" type="password"></input></td>
</tr>
<tr>
<td><input type="submit" value="Submit"</input></td>
</tr>
</table>
</form>
loginsuccess.php有以下检查(有更多PHP代码,但这是相关部分):
$username = mysqli_real_escape_string($connect, $_POST['username']);
$password = mysqli_real_escape_string($connect, $_POST['password']);
$encrypted_mypassword=md5($password);
$query = "SELECT * FROM students WHERE username = '".$username."' AND password = '".$encrypted_mypassword."'";
$result = $connect->query($query);
用户应该被带到另一个页面(没有新的页面:
$encrypted_mypassword=md5($password);
但是他们被发送到错误页面并且它不起作用。有什么想法吗?
答案 0 :(得分:1)
问题似乎是您将密码存储在数据库中的明文中。您需要存储密码的哈希。
请记住,MD5目前不是用于密码散列的合适算法,特别是如果它也是未加盐的。它太快了,可以相对容易地进行暴力搜索。请改用password_hash()
。