我最近在我的注册页面中为我的密码添加了加密。
注册页面提取:
$hashed_password = crypt('pass1');
mysqli_query($mysqli, "INSERT INTO Persons (Username, Password, Email, Gender) VALUES ('$euser', '$hashed_password', '$eemail', '$gender')");
这工作正常,据我所知,所有数据都正确输入到数据库中。
登录页面虽然不验证表单。
登录页面提取
if( $page_mode == 'Login' )
{
$username = $_POST['username'];
$password = $_POST['password'];
if( trim($username) == '' || trim($password) == '' )
{
$error_string .= '<font color=red>You have left either the username or password field blank!</font>';
}
else
{
require "globe.php";
$result = mysqli_query("SELECT PlayerID, Username, Password FROM Persons WHERE Username='" . mysqli_real_escape_string($username) . "'");
$has_pass = crypt($password, $row['Password']);
if( !($row = mysqli_fetch_assoc($result)) || ($row['Password'] != $has_pass) )
{
$error_string .= '<font color=red>Please check your username or password. Your details weren\'t correct.</font> ';
}
else
{
$error_string .= '<font color=red>login not ready </font> ';
mysqli_close($mysqli);
}
}
}
这似乎没有检查它。我也看不出为什么?任何人都知道
如果用户名和密码字段为空,则唯一有效的是错误消息。
编辑:
假设密码是“测试”,我输入测试验证它的页面(也是登录页面)只返回背景。
如果我输入其他内容,同样的问题。
编辑:
添加了所有的支持。但仍然没有运气