Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: 01-Scripts.de - Supportforum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Montag, 18. September 2006, 09:54

Spamschutz durch mathematische Gleichung

Hinweis: Die hier gezeigte Methode um Spam zu verhindern ist in dieser Form nicht 100%ig sicher und kann mit entsprechenden Kenntnissen recht einfach umgangen werden. Gegen normale Bots hilft diese Methode aufgrund der recht geringen Verbreitung meist trotzdem.
Eine Überarbeitung des Artikels ist in Arbeit.


Spambots, die Formulare, Gästebücher und Foren zumüllen nehmen immer weiter zu. Eine Möglichkeit diese "Maschinen" auszusperren besteht zum Beispiel in der äußerst beliebten "Captcha"-Methode. Dabei wird unterhalb des Formulars ein kleines Bild mit einer Buchstaben- und Zahlenfolge ausgegeben, die der (menschliche) Benutzer in ein passendes Feld eintragen muss. Nur wenn die Kombination richtig eingegeben wird, werden die Daten des Formulars eingetragen oder abgesendet.
Mit diesem kleinen Codeschnipsel soll hingegen eine andere Möglichkeit gezeigt werden. Und zwar wird ganz einfach eine kleine Rechenaufgabe gestellt, die der Benutzer lösen muss und dessen Ergebnis er in ein entsprechendes Feld eingeben muss.
Das ganze wird am Beispiel eines kleinen Formulars gezeigt.

Zuerst erstellen wir uns eine Zufallszahl zwischen 1 und 3. Anhand dieser Zufallszahl wird später unsere Rechenoperation bestimmt (also Addition, Subtraktion oder Multiplikation):

PHP-Quelltext

1
2
mt_srand((double)microtime() * 1000000);
$oprand mt_rand(1,3);

Mit der nun folgenden Switch-Anweisung unterscheiden wir die 3 möglichen Fälle.
Um die Rechenaufgaben möglichst einfach zu gestalten generieren wir auch für jeden der drei Fälle andere Zahlen:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
switch($oprand)
    {
    case 1:
     $gl1 mt_rand(1,20); //Zufallszahl zwischen 1 und 20
     $op "+"//Rechenoperator für die Ausgabe später
     $gl2 mt_rand(1,10); //Zweite Zufallszahl zwischen 1 und 10
    //Anschließend wird das Ergebnis mit PHP berechnet und in einem MD5-String verwandelt. Dieser wird später im Formular zur nötigen Kontrolle übergeben.
     $loesungmd5 md5($gl1+$gl2);
    break;
    case 2:
     //Entsprechend der ersten Operation. Das Zahlenspektrum der Zufallszahlen wurde jedoch anders gewählt.
     $gl1 mt_rand(10,30);
     $op "-";
     $gl2 mt_rand(1,$gl1);
     $loesungmd5 md5($gl1-$gl2);
    break;
    case 3:
     //Siehe case 1 und case 2
     $gl1 mt_rand(2,10);
     $op "x";
     $gl2 mt_rand(2,6);
     $loesungmd5 md5($gl1*$gl2);
    break;
    }

Anschließend folgt in HTML das entsprechende Formular. Zum Beispiel:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<form action="<?PHP echo $PHP_SELF?>" method="post">
<table border="0" width="90%">

<tr>
<td align="right"><b>Ihre E-Mail-Adresse*:</b></td>
<td><input type="text" name="email" size="33" /></td>
</tr>

<tr>
    <td align="right"><b>Nachricht*:</b></td>
    <td><textarea name="text" rows="10" cols="40" style="font-family:Verdana, Arial, Helvetica, sans-serif;"></textarea></td>
</tr>

<!--An dieser Stelle werden die beiden Gleichungsvariablen und der Rechenoperator via PHP ausgegeben-->
<tr>
    <td align="right"><b>Spamschutz*:</b></td>
    <td>Bitte lösen Sie die Gleichung: <?PHP echo $gl1." ".$op." ".$gl2?> = <input type="text" name="gleichung" size="4" /></td>
</tr>

<tr>
<td align="right">
    <input type="hidden" name="include" value="contact" />
    <input type="hidden" name="action" value="mail" />
<!--In einem "hidden-field" wird die Lösung der Gleichung als MD5-String zur späteren Überprüfung übergeben. -->
    <input type="hidden" name="glloesung" value="<?PHP echo $loesungmd5?>" />
    <input type="reset" class="input" value="Inhalte Löschen" />
</td>
<td align="right"><input type="submit" class="input" value="Abschicken" /></td>
</tr>

</table>
</form>


Jetzt fehlt noch die Überprüfung des Formulars. Dazu fügen wir am Anfang der entsprechenden PHP-Datei (noch vor dem was wir bisher erstellt haben!) folgendes ein:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?PHP
//Hier wird überprüft, ob das Formular überhaupt abgesendet wurde und ob das vom Benutzer eingegebene Ergebnis stimmt. Dazu wird das vom Benutzer einggegebene Ergebnis ebenfalls in einem MD5-String gewandelt und mit dem im Formular übergebenen Vergleichsstring verglichen.
if(isset($_POST['action']) && $_POST['action'] == "mail" && isset($_POST['gleichung']) && md5($_POST['gleichung']) == $_POST['glloesung'])
    {
    //Gewünschte Operation, die mit dem Formular durchgeführt werden soll.
    }
//Sollte das vom Benutzer errechnete Ergebnis nicht stimmen wird folgende Meldung ausgegeben:
elseif(isset($_POST['action']) && $_POST['action'] != "")
    {
    echo "<p align="center"><b>Sie haben nicht alle nötigen Felder ausgefüllt oder die Gleichung nicht
          richtig gelöst.<br />
          Bitte gehen Sie <a href="javascript:history.back()">zurück</a>.</b></p>";
    }
?>


Das Formular kann jetzt natürlich noch um beliebige weitere Felder erweitert werden.

Eine Beispieldatei dieses Codeschnipsels ist im Anhang zu finden.

Dieser Beitrag ist unter der Creative Commons Namensnennung 2.0 Deutschland lizensiert. Bearbeitung, Nutzung & Verbreitung ist ausdrücklich gestattet.
»Michael Lorer« hat folgende Datei angehängt:
  • kontaktformular.zip (1,64 kB - 1 167 mal heruntergeladen - zuletzt: 17. November 2014, 21:38)
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Michael Lorer« (14. Dezember 2007, 17:47)


2

Samstag, 17. Februar 2007, 12:10

Auch eine nette Idee,

der Test auf unseren Seiten hat ergeben, dass ein einfachs "Bitte OK eintragen" mit Feld schon ausreicht (zumindestens noch) um Spambots auszusperren.

Gruß, Oetzmann.

3

Dienstag, 20. März 2007, 20:55

Spamschutz...

Hallo Michael,
Endlich das Script das ich gesucht habe!
Ich bin ein Anfänger was PHP angeht.
Nun meine Frage:
Wie gebe ich nun meine mail() Angaben an damit das Formular auch an mich geschickt wird... Du hast eine Abfrage ob die Rechnung richtig und wenn Sie richtig ist was dann...
Dass habe ich nicht gerafft :D

4

Dienstag, 20. März 2007, 21:56

RE: Spamschutz...

Zitat

Original von Michel
Hallo Michael,
Endlich das Script das ich gesucht habe!
Ich bin ein Anfänger was PHP angeht.
Nun meine Frage:
Wie gebe ich nun meine mail() Angaben an damit das Formular auch an mich geschickt wird... Du hast eine Abfrage ob die Rechnung richtig und wenn Sie richtig ist was dann...
Dass habe ich nicht gerafft :D


Hallo,

um das Formular letztendlich abzuschicken musst du an der angegebenen Stelle den dafür nötigen Code einfügen:

Quellcode

1
//Gewünschte Operation, die mit dem Formular durchgeführt werden soll.

Ein Beispiel dafür ist u.a. hier zu finden.

MfG,
Michael Lorer
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

5

Samstag, 24. März 2007, 17:07

Hallo Michael,
ich habe mächtig Spamprobleme in einem etwas älteren Gästebuch, schu mal hier ...
http://www.bernis-board.de/gbook.php?action=show&sid=

Musste aus diesem Grund (Einträge sind sofort freigeschaltet, habe keine Option dies zu ändern) das Gästebuch deaktivieren.

Meinst Du man könnte Deine Idee hier irgendwie integrieren?

Gruß vom Berni* :) :]
S` gibt Badische un` unsymbadische

6

Samstag, 24. März 2007, 19:47

Hallo,

prinzipiell ist es möglich den Spamschutz auch in dieses Gästebuch zu integrieren.
Wie das im Detail jedoch geht kann ich dir leider nicht sagen, da ich die Gästebuch-Software nicht kenne.

MfG,
Michael Lorer
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

7

Samstag, 24. März 2007, 22:41

Ich probiere es einfach mal, vielleicht schaffe ich es ja? ?(

Würdest Du mir evtl. dabei helfen? :rolleyes:
S` gibt Badische un` unsymbadische

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

8

Samstag, 24. März 2007, 23:03

Ne, das kriege ich nicht hin ... guckst Du mal Michael? :rolleyes:
»Berni*« hat folgende Datei angehängt:
  • gbook.zip (4,75 kB - 900 mal heruntergeladen - zuletzt: 17. November 2014, 21:39)
S` gibt Badische un` unsymbadische

9

Sonntag, 25. März 2007, 11:45

Das Einbauen sollte nicht sonderlich schwer sein.
Allerdings brauch ich auch noch die Template-Dateien, wenn ich dir das machen soll.

MfG
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

10

Sonntag, 25. März 2007, 20:21

Herzlichen Dank für Deine Hilfsbereitschaft Michael ! :)

Da ich nicht mehr weiss ob ich in den letzten Jahren daran rumgefummelt habe, ;) hänge ich dir nicht die Original-Dateien, sondern die gbook.php wie sie im Root liegt an. Die Templates habe ich exportiert. Eigentlich sind auch noch einige acp-Templates und eine admin_gb.php dabei. Die brauchst Du nicht, oder?


Hab da noch ein kleines Problem:
Falls ein User in seinem Profil "e-Mail Adresse nicht anzeigen" gewählt hat !!

Ist er im Forum angemeldet und schreibt einen Beitrag ins GB, wird der Username und alles andere, also Homepage und e-Mail im GB übernommen. Könnte man das nicht irgendwie deaktivieren, damit die e-Mails der User nicht angezeigt werden (Homepage kann ja bleiben)? Bei Gästen ist es egal, sie müssen die Option e-Mail nicht ausfüllen, bzw. das Eingabefeld dafür kann ich deaktivieren. Nur bei Mitgliedern kann ich nichts machen, die Mailadressen stehen immer drin, ist ärgerlich.


Wenn Du das hinbekommst kann ich das GB wieder in vollem Umfang nutzen. Ist nämlich super das Teil, gibts auch für die neueren Boardversionen nicht mehr.


LG vom Berni* :)
»Berni*« hat folgende Datei angehängt:
  • gb.zip (14,67 kB - 892 mal heruntergeladen - zuletzt: 22. November 2014, 03:46)
S` gibt Badische un` unsymbadische

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Berni*« (25. März 2007, 20:22)


11

Montag, 26. März 2007, 14:51

So, ich hab den Spamschutz jetzt mal eingebaut und die E-Mail-Adresse ausgebaut.
Da ich es nicht testen kann musst du das selber übernehmen ;)

MfG,
Michael
»Michael Lorer« hat folgende Datei angehängt:
  • gbuch.zip (6,62 kB - 890 mal heruntergeladen - zuletzt: 17. November 2014, 21:39)
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

12

Montag, 26. März 2007, 15:34

Fehlermeldung:

Parse error: syntax error, unexpected T_BOOLEAN_AND in /is/htdocs/wp1013255_M4HIDHSQUC/www/gbook.php on line 370
S` gibt Badische un` unsymbadische

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

13

Montag, 26. März 2007, 15:53

Ich sehe gerade es ist beim Beitrag editieren, da bräuchte man es nicht Michael. Kann ja eh nur der Admin. :rolleyes:
S` gibt Badische un` unsymbadische

14

Montag, 26. März 2007, 17:06

Zitat

Original von Berni*
Fehlermeldung:

Parse error: syntax error, unexpected T_BOOLEAN_AND in /is/htdocs/wp1013255_M4HIDHSQUC/www/gbook.php on line 370


uups

--
Funktionierts aber ansonsten?
»Michael Lorer« hat folgende Datei angehängt:
  • gbook.zip (5,23 kB - 892 mal heruntergeladen - zuletzt: Heute, 00:59)
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

15

Montag, 26. März 2007, 19:04

Ja Michael, das GB funktioniert ansonsten.

Der Error ist nun weg. Aber die Gleichung wird ignoriert, man kann also eintragen ohne die Lösung eigegeben zu haben. Da muss auch noch ein kleiner Scriptfehler im gb_input_eingabe.tpl sein, mit dem IE wird in der Statuszeile Fehler angezeigt. ?( 8o

Schau am besten selber mal ...
http://www.bernis-board.de/gbook.php?action=show&sid=

... kannst auch mal als Gast schreiben, habe es zum testen aktiviert.
S` gibt Badische un` unsymbadische

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Berni*« (26. März 2007, 19:05)


16

Montag, 26. März 2007, 20:38

Hm...
dann teste mal die Datei.
»Michael Lorer« hat folgende Datei angehängt:
  • gbook.zip (5,23 kB - 860 mal heruntergeladen - zuletzt: Heute, 11:32)
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

17

Montag, 26. März 2007, 21:02

Jetzt scheint es zu gehen, aber wenn die Lösung nicht eingegeben wird kommt immer ...

Fehlermeldung
Sie können nicht mehrere Einträge in kurzer Zeit hintereinander erstellen.

... obwohl diese Sperre deaktiviert ist.

Glaube ich kann auch die Einträge nicht mehr editieren, muss nochmal schauen.
S` gibt Badische un` unsymbadische

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

18

Montag, 26. März 2007, 21:10

Also editieren darf ich nicht mehr, kein Zugang ...
gbook.php?action=edit ?(
S` gibt Badische un` unsymbadische

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

19

Montag, 26. März 2007, 21:40

Fehlermeldung habe ich im gb_input_error1.tpl geändert ...

Vermutlich hast Du den Spamschutz übersehen, löse bitte die Gleichung unterhalb vom Eingabefeld. Außerdem kannst Du nicht mehrere Einträge innerhalb von 60 Sekunden hintereinander erstellen.

... so kann mans lassen denke ich!?


Wenn jetzt das Editieren noch klappt haben wirs Michael ! :]
S` gibt Badische un` unsymbadische

20

Dienstag, 27. März 2007, 09:31

Zitat

Original von Berni*
Wenn jetzt das Editieren noch klappt haben wirs Michael ! :]


Was klappt denn beim Editieren nicht?
Da hab ich nämlich eigentlich nichts geändert.
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

21

Dienstag, 27. März 2007, 14:21

Ich darf nicht mehr editieren, kein Zutritt als Admin. ;(
S` gibt Badische un` unsymbadische

22

Dienstag, 27. März 2007, 14:58

Zitat

Original von Berni*
Ich darf nicht mehr editieren, kein Zutritt als Admin. ;(


Damit sollte es jetzt aber klappen.
»Michael Lorer« hat folgende Datei angehängt:
  • gbook.zip (5,22 kB - 859 mal heruntergeladen - zuletzt: Gestern, 11:43)
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

Berni*

Profi

Beiträge: 86

Wohnort: Großherzogtum Baden

  • Nachricht senden

23

Dienstag, 27. März 2007, 16:17

Jawohl !! Jetzt hats geklappt !! :) Super Michael, es muss noch ein kleiner Fehler in den Templates sein, beim Klick auf "Speichern" oder "Vorschau" wird kurzzeitig ein Scriptfehler in der Statuszeile angezeigt. Dies tut aber den Funktionen keinen Abbruch, das ist die Hauptsache.


Herzlichen Dank Michael,
ich mussste das GB so lange schon deaktivieren, hatte mir schon überlegt es auszubauen. Ohne dich hätte ich das niemals hinbekommen! Nun kann ich es wieder uneingeschränkt nutzen und das habe ich nur dir zu verdanken !!



Das Mindeste was ich für dich tun kann:
Habe im GB-Footer ein Spamschutz © by Michael Lorer reingemacht.
Außerdem habe ich deine Amazon Wunschliste entdeckt und dir was tolles ausgesucht. Es müsste in den nächsten Tagen bei dir eintrudeln. Wünsche dir viel Spaß damit und hoffe ich habe das Richtige getroffen!


LG vom Berni*
S` gibt Badische un` unsymbadische

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Berni*« (27. März 2007, 16:39)


24

Freitag, 30. März 2007, 16:24

Hallo,

freut mich, dass es klappt. Ich war die letzten Tage nicht daheim und konnte mich dann heute bereits über die DVD freuen.
Vielen Dank!

MfG,
Michael Lorer
Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal oder mit Bitcoins
Oder schenken Sie etwas über die Amazon Wunschliste



Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

25

Samstag, 11. August 2007, 23:36

Hallo,

eine schöne Seite mit hilfreichen Scripts und Beiträgen. Das Lexikon ist genau das, was ich gesucht habe . Gut dokumentiert, nicht überladen und sehr gut anpassbar. Kompliment!

Nun zu meinem Problem:
Ich habe da auch ein uraltes Gästebuch Script. Das wird leider wie viele mit Spam zugeschüttet. Deshalb wollte ich den mathematischen Spamschutz einbauen. Der ist auch soweit drin, allerdings kann trotzdem ins Gästebuch eingetragen werden, ohne daß man das Ergebnis der Gleichung eintragen muß. Irgendwie sehe ich den Fehler nicht. Das hat wohl mit den Namen der Felder zu tun.
Hier mal der von mir bearbeitete Code:

eintragen.php:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php require ("/var/www/web2/html/001/forum/SSI.php"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <link rel="stylesheet" type="text/css" href="../stylesheet.css">
    <META name="description" content="Alles über Röcke, Männerröcke und Kilts mit Forum und vielen Informationen über alternative Männermode.">
    <META name="keywords" content="Männerrock,männerrock,Männerröcke,männerröcke,Herrenrock,herrenrock,Rock,rock,Kilt,kilt,Mode,mode,Forum,forum,Kleid,kleid,Kleider,kleider,Jeansrock,jeansrock,Mann,mann,Männer,männer,Faltenrock,faltenrock,Mini,mini,Minirock,minirock,outfit,Outfit,Modisch,modisch,Alternative,alternative,männermode,Männermode,Wickelrock,wickelrock,Faltenrock,faltenrock">
    <META name="author" content="Matthias F.">
    <META name="publisher" content="Matthias F.">
    <META name="copyright" content="Matthias F.">
    <META http-equiv="Content-Language" content="de">
    <META name="date" content="2004-03-24">
    <META name="robots" content="INDEX,FOLLOW">
    <META name="audience" content="Alle">
    <META name="revisit-after" content="10 days">
    <BASE href="http://www.rockmode.de/001/guestbook/">
    <LINK rel="shortcut icon" href="../images/favicon.ico">
    <title>Alles &uuml;ber den Rock, M&auml;nnerrock und Kilt - mit Forum und Infos</title>
</head>

<BODY topmargin="0" leftmargin="0">
<?php include_once("../guestbook/header.php"); ?>
<?PHP
//Hier wird überprüft, ob das Formular überhaupt abgesendet wurde und ob das vom Benutzer eingegebene Ergebnis stimmt. Dazu wird das vom Benutzer einggegebene Ergebnis ebenfalls in einem MD5-String gewandelt und mit dem im Formular übergebenen Vergleichsstring verglichen.
if(isset($_POST['action']) && $_POST['action'] == "Eintragen" && isset($_POST['gleichung']) && md5($_POST['gleichung']) == $_POST['glloesung'])
    {
    //Gewünschte Operation, die mit dem Formular durchgeführt werden soll.
    }
//Sollte das vom Benutzer errechnete Ergebnis nicht stimmen wird folgende Meldung ausgegeben:
elseif(isset($_POST['ok']) && $_POST['ok'] != "")
    {
    echo "<p align="center"><b>Sie haben nicht alle nötigen Felder ausgefüllt oder die Gleichung nicht
          richtig gelöst.<br />
          Bitte gehen Sie <a href="javascript:history.back()">zurück</a>.</b></p>";
    }

mt_srand((double)microtime() * 1000000);
$oprand = mt_rand(1,3);

switch($oprand)
    {
    case 1:
     $gl1 = mt_rand(1,20); //Zufallszahl zwischen 1 und 20
     $op = "+"; //Rechenoperator für die Ausgabe später
     $gl2 = mt_rand(1,10); //Zweite Zufallszahl zwischen 1 und 10
     //Anschließend wird das Ergebnis mit PHP berechnet und in einem MD5-String verwandelt. Dieser wird später im Formular zur nötigen Kontrolle übergeben.
     $loesungmd5 = md5($gl1+$gl2);
    break;
    case 2:
     //Entsprechend der ersten Operation. Das Zahlenspektrum der Zufallszahlen wurde jedoch anders gewählt.
     $gl1 = mt_rand(10,30);
     $op = "-";
     $gl2 = mt_rand(1,$gl1);
     $loesungmd5 = md5($gl1-$gl2);
    break;
    case 3:
     //Siehe case 1 und case 2
     $gl1 = mt_rand(2,10);
     $op = "x";
     $gl2 = mt_rand(2,6);
     $loesungmd5 = md5($gl1*$gl2);
    break;
    }
?>
<?php include_once("../guestbook/guestbook.php"); ?>
<?php include_once("../guestbook/footer.php"); ?>
</BODY>
</HTML>



guestbook.php:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<br>
<form action="add.php" method="post">
			<table border="0" cellpadding="0" cellspacing="2" width="100%">
				<tr>
					<td>
						<p align="right"><b><font size="2">Name:</font></b></p>
					</td>
					<td><input type="text" name="yourname" size="20"></td>
				</tr>
				<tr>
					<td>
						<p align="right"><b><font size="2">Email:</font></b></p>
					</td>
					<td><input type="text" name="youremail" size="20" value=""></td>
				</tr>
				<tr>
					<td>
						<p align="right"><b><font size="2">Eintrag:</font></b></p>
					</td>
					<td>
							<textarea name="yourmessage" cols="45" rows="10"></textarea></div>
					</td>
				</tr>
				<tr>
    				<td align="right"><b>Spamschutz*:</b></td>
    				<td>Bitte lösen Sie die Gleichung: <?PHP echo $gl1." ".$op." ".$gl2; ?> = <input type="text" name="gleichung" size="4" /></td>
				</tr>
				<tr>
					<td></td>
					<td>
						 	<input type="hidden" name="include" value="contact" />
    						<input type="hidden" name="action" value="mail" />
							<input type="hidden" name="glloesung" value="<?PHP echo $loesungmd5; ?>" />
							<input type="submit" name="ok" value="Eintragen">
					</td>
				</tr>
			</table>
		</form>


Viele Grüße
Matthias

Thema bewerten