Skip to content

Instantly share code, notes, and snippets.

@jswebschmiede
Last active May 18, 2023 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jswebschmiede/86f4a1dfc51168e6d40efd45f9d24c59 to your computer and use it in GitHub Desktop.
Save jswebschmiede/86f4a1dfc51168e6d40efd45f9d24c59 to your computer and use it in GitHub Desktop.
<?php
session_start();
// Zeitraum in Sekunden, in dem die Anzahl der Versuche begrenzt wird
$limitPeriod = 3600; // 1 Stunde
// Maximale Anzahl erlaubter Versuche pro IP-Adresse innerhalb des Zeitraums
$maxAttempts = 3;
// Eindeutiger Schlüssel für die IP-Adresse in der Session
$ipKey = 'form_attempts_' . $_SERVER['REMOTE_ADDR'];
// Überprüfen, ob der Schlüssel in der Session existiert
if (!isset($_SESSION[$ipKey])) {
// Wenn der Schlüssel nicht existiert, initialisiere ihn
$_SESSION[$ipKey] = [
'attempts' => 1, // Erster Versuch
'time' => time() // Zeitstempel des ersten Versuchs
];
} else {
// Wenn der Schlüssel existiert, überprüfe die Anzahl der Versuche und den Zeitraum
$attempts = $_SESSION[$ipKey]['attempts'];
$startTime = $_SESSION[$ipKey]['time'];
$currentTime = time();
if ($currentTime - $startTime < $limitPeriod) {
// Zeitraum noch nicht abgelaufen
if ($attempts >= $maxAttempts) {
// Maximalzahl der Versuche erreicht
echo "Sie haben die maximale Anzahl an Versuchen überschritten. Bitte versuchen Sie es später erneut.";
exit;
} else {
// Erhöhe die Anzahl der Versuche
$_SESSION[$ipKey]['attempts']++;
}
} else {
// Zeitraum abgelaufen, setze die Versuche zurück
$_SESSION[$ipKey] = [
'attempts' => 1,
'time' => $currentTime
];
}
}
// Verarbeiten Sie hier den Formularsubmit
// ...
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment