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/8d8457dac5c0b8657075e8bb4bfa2241 to your computer and use it in GitHub Desktop.
Save jswebschmiede/8d8457dac5c0b8657075e8bb4bfa2241 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 und Fingerprint innerhalb des Zeitraums
$maxAttempts = 3;
// Generiere einen eindeutigen Fingerprint basierend auf IP-Adresse, User-Agent und Cookies
$fingerprint = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $_COOKIE['your_cookie_name']);
// Eindeutiger Schlüssel für den Fingerprint in der Session
$fingerprintKey = 'form_attempts_' . $fingerprint;
// Überprüfen, ob der Schlüssel in der Session existiert
if (!isset($_SESSION[$fingerprintKey])) {
// Wenn der Schlüssel nicht existiert, initialisiere ihn
$_SESSION[$fingerprintKey] = [
'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[$fingerprintKey]['attempts'];
$startTime = $_SESSION[$fingerprintKey]['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[$fingerprintKey]['attempts']++;
}
} else {
// Zeitraum abgelaufen, setze die Versuche zurück
$_SESSION[$fingerprintKey] = [
'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