Generieren eines Quiz für Contact Form 7

Sollten Sie Contact Form 7 für WordPress einsetzen, möchten Sie Ihre Formulare vielleicht mit einem Quiz sichern: dabei handelt es sich um ein Feld in das der Benutzer das Ergebnis bestimmter Fragen eingeben muss. Um den Anwender nicht unnötig zu belästigen, sollten wir möglichst einfache Fragen erzeugen.

Quiz generieren

Wir werden sehr einfache mathematische Gleichungen generieren, um Spam-Bot daran zu hindern das Formular erfolgreich auszufüllen. Damit es richtig einfach wird, müssen nur zwei Zahlen addiert werden, wobei das Ergebnis immer kleiner 10 ist. Somit sollte der Quiz in sekundenschnelle ausgefüllt sein.

Hier ist ein Shell-Skript, das den nötigen Code für das Quiz-Tag generiert.

for i in `seq 1 9`; do
  for j in `seq 1 9`; do
    sum=`expr $i + $j`
    test $sum -gt 9 && continue
    echo -n "\"$i+$j=?|$sum\" "
  done
done
echo

Das selbe Skript in Perl can leicht mit perl -e ausgeführt werden.

for ($i = 1; $i <= 9; $i++) {
  for ($j = 1; $j <= 9; $j++) {
    $sum=$i+$j;
    next unless $sum <= 9;
    print "\"$i+$j=?|$sum\" ";
  }
}
print "\n"'

Nutzen Sie die Variante, die bei Ihnen funktioniert.

Einen Schritt weiter

Möglicherweise denken Sie daran den vorgestellten Code an Ihre Bedürfnisse anzupassen, sind aber viel zu faul um dies zu tatsächlich zu tun. Daran habe ich ebenfalls gedacht und das folgende JavaScript aufgesetzt. Einfach nach Belieben die Werte anpassen und den Code ins Formular kopieren; vielleicht möchten Sie den Namen – quiz-4711 – des Quiz noch anpassen.

Kleinste Zahl
Größte Zahl
Limit

Zusammenfassung

Ein Quiz in meinen Formularen, die ich mit Contact Form 7 erstellt habe, half dabei Spam zu vermeiden. Das Ausfüllen ist sehr einfach und sollte den Benutzer nicht besonders stören. Da ich die oben aufgeführten Skripte häufig genutzt habe, dachte ich daran diese mit denjenigen zu teilen, die ebenfalls einen solchen Quiz aufsetzen wollen.

26 Kommentare ↓

  • Patty Ayers says:
    This is generous of you to share. I just have no idea where to put the script! I took a guess and put it into the Quiz tag between the quotes, but that doesn’t work.
  • Hi Patty,
    copying the scripts presented above won’t cut it because they were meant to be evaluated manually, i.e. using a shell or Perl interpreter. Instead, just use the generated quiz tag inside the text area under Going one step further; if you want to you can adjust the values min/max number and limit as you see fit.
  • Patty Ayers says:
    Hi Christian – Ok, that makes sense! I can just use the generated tag. Much appreciated!
  • Brad says:
    Oh, this is great. Many thanks.
  • Ben Miller says:
    Thanks for the quiz code! The Really Simple Captcha on my site just started failing to stop spam today.
  • maz yayan says:
    thank you. my site now use math quiz. no spam anymore.
  • […] Use this link to easily generate a quiz for Contact Form 7 This entry was posted in Sem categoria. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL. « WordPress Hook Hacks […]
  • Super Sache,

    Vielen Dank für das vorbereitete Quiz Tag!

  • Faxedhead says:
    Yes, I am lazy and I hate spam! Thanks heaps 🙂
  • Thanks for taking the time to post that solution. Even if it only saved me 20 minutes of typing, I’ll be sure to use it again. 20 minutes is 20 minutes! 😉

    Just wanted to post my appreciation for your efforts.

    Roger D.

  • Hello Roger and everybody else,
    thank you for your encouraging feedback, it’s really nice to hear that the little tool helped you. To be honest, I’ve used it so many times now, it has saved me lots and lots of time – it’s great that you’ve saved some time too.
  • James says:
    Very helpful. Many thanks!
  • andrew says:
    Hmm. I’ve noticed that if you are filling out a contact form but answer the quiz wrong it won’t let you send even if you get it right after that…?
  • Hi Andrew,
    I’ve just tried that but couldn’t reproduce this issue. If this seems to be a reproducible error on your end please contact the author of CF7 and tell him more about it.
  • andrew says:
    thanks! will do that. I’m trying the Bad Behavior plug-in now, I’m hoping that will help…?
  • Hansjörg says:
    Super. Vielen Dank!!!
  • web-profile says:
    Thanks a lot.
    P.S. You can remove (class:quiz) from code because it is optional parameter.
  • Hi web-profile,
    if you don’t need this parameter simply remove it manually before pasting the code into your form. Other people – including me – need this to style the element with CSS and that’s the reason I added it in the first place.
  • web-profile says:
    Ok, I understood. Do you know how to change the layout of quiz block? Now it is: (span input) and I need, for example: (p input).
  • Hi web-profile,
    I guess you’re better off asking this the developer of CF7 but I think you’ll have to adapt the plugin for this because the markup is generated in its core and normally you don’t have to bother how this exactly works. If you just want to change the styling I recommend using CSS and applying it to the elements of the quiz; this way you don’t necessarily have to change the markup and the plugin which in turn makes updating the plugin easier in the long run.
  • web-profile says:
    Thanks for response. Yeah, I know, if I will change the core files and then update the plugin, then everything I’ve done will be destroyed. Ok, I will style it with css. Thanks anyway.
    P.S. I think your reply should be yellow (not gray). Missing class (bypostauthor) for the list item, which wraps your reply.
  • Bridget says:
    I have been search for ages for a simple way to include a random maths question in contact form 7. This works perfectly. thank you so much!
  • Hallo Christian, danke für deine Arbeit, danach habe ich eben gesucht. Eine Frage noch, ich würde gerne vor der Aufgabe noch einen Hinweis eingeben, z.B. Spam-Schutz. Leider schaffe ich das irgendwie nicht, kannst Du helfen?
  • Hi Benjamin,
    Du kannst in dem Feld, in dem Du den Code für den Quiz einfügst beliebigen Text davor und dahinter schreiben. Bei meinem Kontaktformular sieht das beispielsweise so aus:

    Bitte keine Spam-Bots...
    [quiz ...

    Ersetzen den Satz einfach durch etwas bei dir passendes, speichere das Formular und die Änderung sollte auf der Webseite sichtbar werden.

  • Alfred says:
    Thank You!.