ログイン スクリプトでブルート フォース保護を作成しようとしています。アカウントがロックされているデータベースを更新するはずのクエリは機能しませんが。このコードを 30 分間見てきたので、イライラし始めています..
とにかくここにコードがあります:
if(isset($_POST['submit'])) {
$mysqli = getConnected('*','*','*','*');
$username = $mysqli->escape_string($_POST['username']);
$password = $mysqli->escape_string($_POST['password']);
$hash = sha1($password);
$query = "SELECT * FROM users WHERE username='$username'";
$result = $mysqli->query($query);
$data = $result->fetch_assoc();
if($data['lock'] == 0) {
if($hash == $data['password']) {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
$result->free();
$mysqli->close();
header("Location: index.php?p=start");
} else {
if($data['login_attempts'] != 0) {
$attempts_left = $data['login_attempts'] - 1;
$query2 = "UPDATE users SET login_attempts='$attempts_left' WHERE username='$username'";
$mysqli->query($query2);
echo "Inloggningen misslyckades, du har ". $attempts_left ." försök kvar.";
} else {
$query3 = "UPDATE users SET lock='1' WHERE username='$username'";
$mysqli->query($query3);
echo "Ditt konto har låsts.";
}
}
} else {
echo "Ditt konto är låst, kontakta webmaster för att återställa det.";
}
}
問題は $query3 が実行される場所ですが、var_dump に従って正しく実行されます。
私が狂っていないことを確認するために、2番目の目が必要です!