Vielleicht bin ich für heute schon zu müde, oder aber es gibt dafür keine so einfache Lösung, wie ich mir das wünsche. Ich habe einen Login in PHP 8 gebaut. In einer MariaDB-Datenbank wird geprüft, ob der User innerhalb der letzten 5 Minuten 5 oder mehr Fehlversuche beim Login hatte. Falls ja, so bekommt er einen Fehler. Als zusätzlichen "Service" möchte ich ihm anzeigen, wie lange er warten muss (in Sekunden), damit diese Bedingungen nicht mehr erfüllt sind.
Das hier ist erst mal der Code:
In das
Hat jemand einen Ansatz?
Das hier ist erst mal der Code:
PHP-Quellcode
- $result = $db->query('SELECT COUNT(*), MAX(accesstime) FROM user_accesslog WHERE success = FALSE AND accesstime >= ' . time() - (5 * 60)); // letzte 5 Minuten
- $row = $db->fetch_row();
- if ($row[0] >= 5) {
- // User muss warten vor nächstem Login
- die('Password has been entered wrong too often, please wait ' . '...' . ' seconds.');
- }
In das
'...'
soll die Zeit rein. Im Moment zur Verfügung stehen die Werte $row[1]
für den letzten fehlerhaften Zugriffszeitpunkt (könnte man auch auf den ältesten innerhalb der letzten 5 Minuten setzen), die aktuelle Zeit time()
und natürlich der Wert 5
für die 5 Minuten Wartezeit.Hat jemand einen Ansatz?