Die Funktion accessCount()
dient dazu, Falscheingaben bei einer Code-Abfrage zu begrenzen. Ohne Parameter gibt die Funktion die Anzahl der bisherigen Versuche zurück. Wird der Parameter Sperrzeit
angegeben, dann wird der Zähler um eins erhöht.
int accessCount([int Sperrzeit])
Hinweis: Bei der Abfrage von Teilnahmecodes zählt SoSci Survey Fehlversuche automatisch. Die Funktion accessCount()
ist nur dann erforderlich, wenn die Abfrage und Prüfung von Codes manuell umgesetzt wird.
Hinweis: Die Funktion prüft die mehrfache Eingabe sowohl anhand des laufenden Interviews als auch anhand der IP-Adresse. Die Sperreinträge werden getrennt von den erhobenen Daten gespeichert, sodass für gewöhnlich keine Verarbeitung personenbezogener Daten im Sinne der DSGVO erfolgt. Allerdings kann die Sperre durch einen Internet-Proxy umgangen werden, welcher auf den Fragebogen über unterschiedliche IP-Adressen zugreift.
Hinweis: Die Funktion erstellt auch einen Eintrag in der externen Sperrliste, welche vom Server u.U. dazu genutzt wird, eine IP-Adresse für einen längeren Zeitraum komplett auszusperren (Serverkonfiguration: fail2ban für SoSci Survey).
Dieses Anwendungsbeispiel benötigt folgende Voraussetzungen:
Auf Seite 1 des Fragebogens wird zunächst mittels accessCount()
geprüft, ob maximal 5 Fehlversuche gemacht wurden. Abhängig davon wird das Eingabefeld oder eine Fehlermeldung angezeigt. Im zweiten Fall dann auch kein „Weiter“-Knopf.
if (accessCount() > 5) { show('TC03'); // Fehlermeldung "zu viele Versuche" buttonHide(); // Knöpfe ausblenden pageStop(); } else { show('TC01'); // Fragen nach dem Teilnahmecode }
Auf der zweiten Seite wird der Code gegne die Datenbank für Inhalte geprüft. Abhängig von der Prüfung wird entweder ein Fehlversuch gezählt oder eine Fehlermeldung angezeigt, und die vorige Seite wiederholt.
$code = strtolower(value('TC03')); // Eingabe in Kleinbuchstaben konvertieren $key = 'Code-'.$code; // Präfix für den Datenbank-Eintrag ergänzen $data = dbGet($key); // Auslesen des Datenbank-Eintrags // Falls kein Datenbank-Eintrag gefunden wird if (!$data) { accessCount(600); // Sperreintrag für 10 Minuten anlegen und um eins hochzählen repeatPage('TC02'); // Fehlermeldung zeigen und Seite wiederholen }