Neuigkeiten:

Privates MODX und LINUX BLOG, User Registrierung ist deaktiviert! Fragen oder Tipps? Bitte per Matrix: @jolichter:tchncs.de

Hauptmenü

dummeFrage für MODX

Begonnen von Jo, 2013-03-08 | 18:46:14

« vorheriges - nächstes »

Jo

Anstatt Captchas oder Rechenaufgaben für eine Unterscheidung zwischen Computern und Menschen festzustellen, kann man auch einfach mal eine dumme Frage stellen.

Zum Beispiel nach dem Vornamen von Alfred Neumann, das im Vergleich zu verzerrten Wörtern oder dem Ausrechnen von Rechenaufgaben die Benutzerfreundlichkeit erhöht.

Das ist wohl die dümmste funktionierende Sicherheitsabfrage der Welt.

Hier mein dummeFrage Snippet, welches die Fragen per Zufall generiert (auf eigene Gefahr!):
<?php
#
# dumme Fragen per Zufall erstellen
#
$strIntro1 = array('Dumme Frage: ''Blöde Frage: ''Nur eine Frage: ''Fangfrage: ');
$strIntro2 = array('Wie lautet der Vorname von ''Das erste Wort von ''Wie lautet der Nachname von ''Das letzte Wort von ');
$strName = array('Peter Maffay''Martin Luther''Anne Hathaway''Eva Rosenberg''Rosi Musterfrau''Alfred Neumann');

$randIntro1 $strIntro1[array_rand($strIntro1)];
$randIntro2 $strIntro2[array_rand($strIntro2)];
$randName $strName[array_rand($strName)];

# Frage zusammen setzen
  
$randFrage $randIntro2.$randName.'?';

# Session erstellen
   
if (!isset($_SESSION['dummeFrage']))
      {
      
$_SESSION['dummeFrage'] = $randFrage;
      }

# Platzhalter [[+dummeFrage]]
$modx->setPlaceholder('dummeFrage'$randIntro1.$_SESSION['dummeFrage']);


#
# dumme Antwort in Platzhalter schreiben
#

# den Zufallsnamen in ein Array (Position 0=Vorname und 1=Nachnahme)
  
$randName explode(' '$randName);
  
$intPosition array_search($randIntro2$strIntro2);
     if (
$intPosition !== false) { 
           
# die ersten 2 Variablen im Array $strIntro2 wird nach dem Vornamen gefragt
           
if ($intPosition 2) {
           
$strAntwort $randName[0];  #Vorname
           
} else {
           
$strAntwort $randName[1];  #Nachname
           
}
        }

# Session erstellen
   
if (!isset($_SESSION['dummeAntwort']))
      {
      
$_SESSION['dummeAntwort'] = $strAntwort;
      }

# Platzhalter [[+dummeAntwort]]
$modx->setPlaceholder('dummeAntwort'$_SESSION['dummeAntwort']);



Die richtige Antwort auf die dumme Frage holt ihr in euren entsprechenden Script dann so:$dummeAntwort = $modx->getPlaceholder('dummeAntwort');
Das vergleicht ihr nur noch mit der eingegebenen Antwort. Voila fertig.

Nicht vergessen, nach der richtigen Antwort die Session zu löschen - sonst hat der Besucher immer die gleiche Frage ,-)
unset($_SESSION['dummeFrage']);
unset($_SESSION['dummeAntwort']);