Tutorial

Tutorials von Thomas Frei-Herrmann

Tutorial Alter berechnen mittels PHP-Skript

Hier habe ich mir zunächst aus den Formular-Werkzeugen von NOF ganz normale Eingabefelder aufgezogen, denen ich die Namen

Name für das Eingabefelde “Name”
Geburtstag für das Eingabefeld “Geburtstag”

gegeben habe.

Dann habe ich die Gültigkeit beider Felder überprüft ...

... und beim Feld für das Geburtsdatum eben auch auf eine gültige Datums-Eingabe geprüft.

Da ich in diesem Beispiel mein Skript zur Überprüfung des Alters direkt in die gleiche Seite, hier die index.php (meine Startseite), eingebaut habe, gebe ich diese Seite auch als Ziel unter “Aktion” an und wähle bei “Methode” > “Verschicken” (nämlich an meine Seite index.php).

Weiterhin habe ich ein verdecktes Feld mittels Klick auf das “+” Zeichen hinzugefügt, dass ich “action” genannt habe und das den
Wert “send” hat. Hiermit überprüfe ich im Skript, ob der Senden-Button überhaupt schon betätigt wurde, denn nur dann soll das Skript ja auch ausgeführt werden.

Die Seite, auf der Ihr ein PHP-Skript einbaut, muss natürlich auch auf die Datei-Erweiterung .php umgestellt worden sein.

> Menü oben > Bearbeiten > Benutzerdefinierte Namen > Dateierweiterung > .php wählen

 

Unten das Skript, das ich mir zusammen gebastelt habe. Dabei öffne ich hier eine SESSION, damit ich meine SESSION-Variablen als Hinweis wieder an meine Formular-Seite übergeben kann. Ihr könntet das natürlich auch nur mit den POST-Variablen machen.

Dieses Skript gehört in die Layout-HTML der Seite (hier meiner Seite index.php) ganz oben in den Beginn der Seite (keine Leerzeile lassen).

> Layout markieren > Fenster “Layout-Eigenschaften” > Button “HTML” > “Beginn der Seite” einfügen

<?php

   // V0201201203
   @session_start();

   // Beginn Funktion ‘DEAlter’
   function DEAlter($GebDEDatum)
   {

      $DEDatumsFormat = '/^[0-3][0-9]\.[0-1][0-9]\.[1-2][0-9][0-9][0-9]$/';

      if (preg_match($DEDatumsFormat, $GebDEDatum))
      {
         $AktuellesDEDatum = date("j.n.Y");
         $AktuellesDEDatumArray = explode('.', $AktuellesDEDatum);
         $AktuellesDEDatumArrayalsInt = array_map('intval', $AktuellesDEDatumArray);

         $AktuellerTag = $AktuellesDEDatumArrayalsInt[0];
         $AktuellersMonat = $AktuellesDEDatumArrayalsInt[1];
         $AktuellesJahr = $AktuellesDEDatumArrayalsInt[2];

         $GebDEDatumArray = explode(".", $GebDEDatum);
         $GebDEDatumArrayalsInt = array_map('intval', $GebDEDatumArray);

         $GebTag = $GebDEDatumArrayalsInt[0];
         $GebMonat = $GebDEDatumArrayalsInt[1];
         $GebJahr = $GebDEDatumArrayalsInt[2];

         if(checkdate($GebMonat, $GebTag, $GebJahr))
         {
            $AlterinJahren = $AktuellesJahr - $GebJahr;

            if ($AktuellersMonat > $GebMonat)
            {
               return $AlterinJahren;
            }

            if (($AktuellersMonat == $GebMonat) && ($AktuellerTag >= $GebTag))
            {
               return $AlterinJahren;
            }
            return ($AlterinJahren-1);
         }
      }

      return (-1);

   }
   // Ende Funktion ‘DEAlter’


   // Beginn Überprüfung des Alters
   if (isset($_POST['action']) && ($_POST['action'] == 'send') && isset($_POST['Geburtstag']))
   {

      $WieAlt = DEAlter($_POST['Geburtstag']);
      $_SESSION['Eingabename']=htmlentities($_POST['Name'],ENT_QUOTES);
      $_SESSION['Eingabedatum']=htmlentities($_POST['Geburtstag'],ENT_QUOTES);

      // Datums-Format falsch eingetragen
      if ($WieAlt <= -1)
      {
         $_SESSION['Datumformat']="falsch";
      }
      else
      {
         $_SESSION['Datumformat']="richtig";
      }

      // Alter prüfen, hier ob bereits 18 Jahre alt
      if ($WieAlt >= 18)
      {
         $_SESSION['erwachsen']="JA";
      }
      else
      {
         if ($WieAlt >= 0)
         {
            $_SESSION['erwachsen']="NEIN";
         }
      }

   }
   // Ende Überprüfung des Alters

?>

Zur Anzeige auf meiner Formular-Seite, habe ich mir ein Textfeld aufgezogen und noch ein kleines Skript erstellt, das ich in den
HTML-Code Editor dieses Textfeldes kopiert habe (die CSS-Klassen, um rote und blaue Schrift darzustellen, habe ich vorher erstellt).

<?php
   if ($_SESSION['Datumformat'] == "richtig") {

      if ($_SESSION['erwachsen'] == "NEIN") {
         echo "<div class=rot>Du bist leider noch keine 18 Jahre alt </div>";
         //hier bei Bedarf umleiten (// vor der nächsten Zeile entfernen und korrekte URL eintragen)
         //echo "<meta http-equiv='refresh'content='0;URL=http://www.DeineDomain.de/html/Verbanntseite.html'>";

      }
      if ($_SESSION['erwachsen'] == "JA") {
         echo "<div class=blau>Willkommen im Club </div>";
         //hier bei Bedarf umleiten (// vor der nächsten Zeile entfernen und korrekte URL eintragen)
         //echo "<meta http-equiv='refresh'content='0;URL=http://www.DeineDomain.de/html/Erfolgsseite.html'>";

      }

   }

   if ($_SESSION['Datumformat'] == "falsch") {
      echo "<div class=rot>Datum in diesem Format: <span class=blau>TT.MM.JJJJ</span> eingeben</div>";
   }
   // SESSION schließen
   session_destroy();
?>

In der Praxis leitet Ihr dann eben, anstatt einer Anzeige auf der Seite, mit dem Befehl

echo "<meta http-equiv='refresh'content='0;URL=http://www.DeineDomain.de/html/Erfolgsseite.html'>";

innerhalb der IF-Bedingung zur Prüfung, ob das 18. Lebensjahr bereits erreicht wurde, auf die eine oder andere Erfolgsseite weiter.

nach oben

Viel Erfolg !

diese Seite weiter empfehlen



Counter Statistik