Ein einfaches Gästebuch - Eintrag prüfen

Wenn der Besucher das Formular ausgefüllt und gesendet hat, dann müssen seien eigegebenen Daten geprüft werden.
Dies erledigt die eintrag-pruefen.php im Ordner "gaeste" was ein Unterverzeichnis von "privates" ist.
Sie prüft, ob Programmierversuche gemacht wurden an Hand der Zeichen "<", "{" und "[". Die schließenden Klammern müssen wir nicht suchen, sie lösen eh nichts aus.
Ferner werden der Name und der Inhalt nach einer Mindestanzahl an Zeichen geprüft, da die beiden Felder Pflichtfelder sind.
Die anderen Felder werden ebenfalls auf Richtigkeit geprüft (E-Mail nach @ und . - Homepage nach ), dies jedoch nur, wenn Eingaben stattgefunden haben.
Abschließend wird noch geprüft, ob die Rechenaufgabe richtig gelöst wurde.
Je nach aufgetretenen Fehlern wird dann entweder das Formular noch einmal angezeigt (bei zusätzlichen Fehleingaben) oder der Eintrag übernommen.

Hier das Script der eintrag-pruefen.php:
<?php
// --- Variable zum Fehler sammeln ---
$fehler_angaben = array("0"=>"<p align=center>Bei der Prüfung des Formulars sind Fehler aufgetreten, prüfe daher noch einmal:</p>\n");
// --- Fehler suchen ---
// --- Da wir in der Einleitung Programmierung nicht wollen, müssen wir auch nach Ansätzen dazu suchen ( <,{,[ ) ---
if(strstr($name,"<") OR strstr($name,"{") OR strstr($name, "[")) // --> im Namen nach <,{ und [ suchen
  {
    // --- mindestens ein Zeichen vorhanden, deshalb FEHLER (Programmierversuch) ---
    $fehler_name = "<center>Deinen Namen</center>\n";
    array_push($fehler_angaben,$fehler_name);
  }
else
  {
    // --- Zeichen Nicht vorhanden, Länge der Eingabe prüfen ---
    if(strlen($name) <= '4')
      {
        $fehler_name = "<center>Deinen Namen</center>\n";
        array_push($fehler_angaben,$fehler_name);
      }
  }

if(strstr($wohnort,"<") OR strstr($wohnort,"{") OR strstr($wohnort, "["))
  {
    // --- mindestens ein Zeichen vorhanden, deshalb FEHLER (Programmierversuch) ---
    $fehler_wohnort = "<center>Deinen Wohnort</center>\n";
    array_push($fehler_angaben,$fehler_wohnort);
  }
else
  {
    // --- Zeichen Nicht vorhanden, Länge der Eingabe prüfen ---
    // --- Dies entfällt hier, da freiwilliges Feld (damit kannst Du den else-Zweig auch weglassen) ---
  }

if(strstr($email,"<") OR strstr($email,"{") OR strstr($email, "["))
  {
    $fehler_email = "<center>Deine E-Mail</center>\n";
    array_push($fehler_angaben,$fehler_email);
  }
else
  {
    // --- falls email Zeichen enthällt, Inhalt prüfen ---
    if(strlen($email) < '1')
      {
        // --- E-Mail enthällt nichts - OK ---
      }
    else
      {
        // --- E-Mail enthällt was - Prüfen ---
        if(strlen($email) <= '7')
          {
            // --- E-Mail zu kurz ---
            $fehler_email = "<center>Deine E-Mail</center>\n";
            array_push($fehler_angaben,$fehler_email);
          }
        else
          {
            // --- E-Mail Länge OK - @ und . suchen ---
            if(strstr($email,"@") && strstr($email,"."))
              {
                // --- E-Mail OK ---
              }
            else
              {
                // --- Fehler in der E-Mail ---
                $fehler_email = "<center>Deine E-Mail</center>\n";
                array_push($fehler_angaben,$fehler_email);
              }
          }
      }
  }

if(strstr($homepage,"<") OR strstr($homepage,"{") OR strstr($homepage, "["))
  {
    // --- mindestens ein Zeichen vorhanden, deshalb FEHLER (Programmierversuch) ---
    $fehler_homepage = "<center>Deine Homepage</center>\n";
    array_push($fehler_angaben,$fehler_homepage);
  }
else
  {
    // --- Falls Eingaben vorhanden sind - prüfen ob ein . existiert ---
    if(strlen($homepage) > '5')
      {
        if(strstr($homepage,"."))
          {
            // --- Homepageadresse OK ---
          }
        else
          {
            // --- Homepageadresse ohne PUNKT - > FEHLER ---
            $fehler_homepage = "<center>Deine Homepage</center>\n";
            array_push($fehler_angaben,$fehler_homepage);
          }
      }
    elseif (strlen($homepage) < '1')
      {
        // --- Leer - OK - da Freiwillig ---
      }
    else
      {
        // --- Homepageadresse zu kurz ( nur 1 bis 5 Zeichen)---
        $fehler_homepage = "<center>Deine Homepage</center>\n";
        array_push($fehler_angaben,$fehler_homepage);
      }
  }

if(strstr($nachricht,"<") OR strstr($nachricht,"{") OR strstr($nachricht, "["))
  {
    $fehler_nachricht = "<center>Deine Nachricht</center>\n";
    array_push($fehler_angaben,$fehler_nachricht);
  }
else
  {
    // --- Zeichen Nicht vorhanden, Länge der Eingabe prüfen ---
    if(strlen($nachricht) <= '10')
      {
        $fehler_nachricht = "<center>Deine Nachricht</center>\n";
        array_push($fehler_angaben,$fehler_nachricht);
      }
  }

// --- Prüfen der Rechenaufgabe ---
if($aufgabe == 'plus')
  {
    $ergebnis = bcadd($zahl1,$zahl2);
  }
else
  {
    $ergebnis = bcmul($zahl1,$zahl2);
  }
if($ergebnis == $loesung)
  {
    // --- Rechenaufgabe richtig ---
  }
else
  {
    // --- Rechenaufgabe FALSCH ---
    $fehler_aufgabe = "<center>Deine Rechenaufgabe</center>\n";
    array_push($fehler_angaben,$fehler_aufgabe);
  }

// --- wieder Fehlermenge feststellen ---
$fehler_anzahl = count($fehler_angaben);
// --- Ist mehr als ein Eintrag, dann sind Fehler aufgetreten - nochmal Formular ---
if($fehler_anzahl >= '2')
  {
    @include_once "privates/gaeste/formular.php";
  }
else
  {
    // --- keine weiteren Fehler eingetragen - Eintrag übernehmen ---
    echo "<h1 align=center>Gästebucheintrag erstellen</h1>\n";
    echo "<p align=center>Folgender Gästebucheintrag wird zur Übernahme vorbereitet:</p>\n";
    $heute = date("d. m. Y"); // -> heutiges Datum
    echo "<p align=center>Eintrag erstellt von: $name</p>\n";
    echo "<p align=center>Wohnhaft in: $wohnort</p>\n";
    echo "<p align=center>Erstellt am: $heute</p>\n";
    echo "<p align=center>E-Mail Adresse: $email</p>\n";
    echo "<p align=center>Homepage Adresse: $homepage</p>\n";
    echo "<p align=center>Nachricht:</p>\n";
    echo "<p align=center>$nachricht</p>\n";
    // --- Datenbankverbindung aufbauen ---
    @include_once "privates/cgi-bin/datenbank.php";
    $oeffne_db = @mysql_pconnect($Datenbank_server, $Datenbank_user, $Datenbank_passwort);
    if($oeffne_db == TRUE)
      {
        // --- DB geöffnet ---
        $db_select = @mysql_select_db($Datenbank_name,$oeffne_db);
        if($db_select == true)
          {
            // --- Aktivierung erfolgreich ---
            // --- Prüfen, ob Tabelle zum Eintragen existiert ---
            $gaeste_tabelle=false;
            // --- Tabelle für Gästebuch suchen ---
            $sql = "SHOW TABLES FROM $Datenbank_name";// --- alle DB-Tabellen auflisten
            $result_table = mysql_query($sql);
            if(!result_table)// --- Wenn Verbindung fehl geschlagen
              {
                exit; // --- Script beenden
              }
            $alle_tabellen = array(); // --- Array für alle vorhandenen Tabellen reinschreiben
            while($row_table = mysql_fetch_row($result_table)) // --- Schleife für Tabellensuche
              {
                array_push ($alle_tabellen,$row_table[0]);// --- Tabellen ins Array schreiben
              }
            if(in_array($tabelle_gaeste,$alle_tabellen))// --- nach Tabelle im Array suchen
              {
                $gaeste_tabelle=true;// --- wenn vorhanden, dann auf wahr setzen
              }

            // --- Falls Tabelle nicht vorhanden - ERSTELLEN ---
            if($gaeste_tabelle == false)
              {
                $gaeste_erstellen = "CREATE TABLE $tabelle_gaeste (ID INTEGER AUTO_INCREMENT NOT NULL, " .
                      "name VARCHAR(31), wohnort VARCHAR(31), email VARCHAR(41), " .
                      "homepage VARCHAR(41), nachricht TEXT, datum VARCHAR(13), " .
                      "anmerkung TEXT, aktiviert VARCHAR(2), PRIMARY KEY (ID))";
                $gaeste_erstellt = @mysql_query($gaeste_erstellen);
                if($gaeste_erstellt == true)
                  {
                    $gaeste_tabelle=true;
                  }
              }

            // --- Jetzt sollte die MYSQL-Tabelle vorhanden sein ---
            // --- Um Fehler vorzubeugen - noch mal die Abfrage - jetzt true ---
            if($gaeste_tabelle == true)
              {
                // --- Tabelle vorhanden - WEITER ---
                echo "<p align=center><br>Verbindung zum Eintrag übernehmen wurde hergestellt.<br><br>\n";
                // --- Aktivierung festlegen (x = aktiviert, 0 = deaktiviert) ---
                $aktiviert = "0";
                // --- Arrays zum Tausch von Umlauten und ähnlichem ---
                $tausche_text = array("ä"=>"&auml;", "ü"=>"&uuml;","ß"=>"&szlig;"); // und weitere (€ Ä Ö ...)
                $tausche_email = array("@"=>"(at)","."=>"(dot)"); // E-Mail für Spamrobots unkenntlich machen
                // --- jetzt Tauschen ---
                $Name = strtr($name, $tausche_text);
                $Wohnort = strtr($wohnort, $tausche_text);
                $Nachricht = strtr($nachricht, $tausche_text);
                $Email = strtr($email, $tausche_email);
                // --- Jetzt eintragen ---
                $strSQL = @mysql_query("INSERT INTO $tabelle_gaeste (name, wohnort, email, homepage, nachricht, datum, aktiviert) " .
                      "VALUES ('$Name','$Wohnort','$Email','$homepage','$Nachricht','$heute','$aktiviert')");
                //$Erg = @mysql_query($strSQL);
                if ($strSQL == true)
                  {
                    // --- Eintrag erfolgreich ---
                    echo "<h3 align=center>Vielen Dank für das Ausfüllen des Formulars.</h3>\n";
                    echo "<p align=center><br>Nach erfolgreicher Prüfung wird Dein Eintrag frei geschalten.</p>\n";
                    // --- Eventuell eine E-Mail an Dich selbst senden um den Eintrag freizuschalten (siehe E-Mail senden) ---
                  }
                else
                  {
                    // --- Eintrag FEHLGESCHLAGEN ---
                    echo "<h3 align=center>Auf Grund eines unerwarteten Fehlers konnte Dein Eintrag nicht übernommen werden.</h3>\n";
                    echo "<p align=center><br>Bitte versuche es zu einem späteren Zeitpunkt noch einmal.</p>\n";
                  }
              }
            else
              {
                // --- Tabelle leider noch nicht vorhanden - Fehlermeldung ---
                echo "<h3 align=center>Auf Grund eines unerwarteten Fehlers konnte Dein Eintrag nicht übernommen werden.</h3>\n";
                echo "<p align=center><br>Bitte versuche es zu einem späteren Zeitpunkt noch einmal.</p>\n";
              }
          }
        else
          {
            // --- Aktivierung FEHLGESCHLAGEN ---
            echo "<h3 align=center>Auf Grund eines unerwarteten Fehlers konnte Dein Eintrag nicht übernommen werden.</h3>\n";
            echo "<p align=center><br>Bitte versuche es zu einem späteren Zeitpunkt noch einmal.</p>\n";
          }
      }
    else
      {
        // --- DB NICHT geöffnet ---
        echo "<h3 align=center>Auf Grund eines unerwarteten Fehlers konnte Dein Eintrag nicht übernommen werden.</h3>\n";
        echo "<p align=center><br>Bitte versuche es zu einem späteren Zeitpunkt noch einmal.</p>\n";
      }
  }
?>

Erläuterungen zum Script muss ich sicherlich nicht mehr machen - ist im Script dokumentiert und was nicht, wurde auf den vorhergehenden Seiten erklärt.

Was jetzt noch fehlt ist das Buch zum anzeigen selbst - was Du auf der nächsten Seite findest.