Übersetzungen dieser Seite:
 

accessCount()

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])

  • Sperrzeit – Wenn eine Sperrzeit (in Sekunden) eingetragen wird, dann legt die Funktion einen Sperreintrag an bzw. zählt diesen um eins hoch. Nach Ablauf der Sperrzeit (gerechnet ab dem ersten Aufruf der Funktion) werden die Fehlversuche auf 0 zurückgesetzt.

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).

Anwendungsbeispiel

Dieses Anwendungsbeispiel benötigt folgende Voraussetzungen:

  • Es wurden gültige Teilnahmecodes erzeugt.
  • In der Datenbank für Inhalte wurden für die Teilnahmecodes Einträge angelegt, der Schlüssel setzt sich aus „Code-“ und dem Teilnahmecode zusammen, also z.B. „Code-abcde12345“.
  • Der Teilnahmecode wird auf Seite 1 mit einer Texteingabe-Frage abgefragt, die Variable zum Eingabefeld hat die Kennung „TC01_01“.
  • Für den Fall, dass ein falscher Code eingegeben wurde, wurde eine Fehlermeldung als Text TC02 angelegt, für den Fall, dass zu viele ungültige Eingaben versucht wurden, existiert ein zweiter Text TC03.

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
}
de/create/functions/accesscount.txt · Zuletzt geändert: 02.11.2024 16:42 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki