Datum auf Volljährigkeit überprüfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datum auf Volljährigkeit überprüfen

    Hallo!

    Ich möchte ein Datum das in ein Formular eingegeben wird daraufhin überprüfen ob derjenige der es eingeben hat (vorrausgesetzt es ist sein richtiges geburtsdatum) 18 ist. Ich dachte erst das sein mit timestamp ganz einfach aber irgendwie klappt es nicht.

    Zuerst mal hab ich schonmal rausgeschmissen wessen jahr < 1970 ist da ja sonst der timestamp nicht funkltioniert. Und gesagt das diejenigen auf jeden fall 18 sind. Der rest ist hier:

    Das ist nur ein besipiel die Eingaben kommen später per formular.

    PHP-Code:
    <?

    //Geburtsdatum einlesen
    $gebtag[tag]=25;
    $gebtag[monat]=11;
    $gebtag[jahr]=1987;

    //wer früher als 1970 geboren ist ist 18
    if($gebtag[jahr] > 1970)
    {

    //timestamp des geburtstages tages erzeugen
    $tsgeb=mktime(0,0,0,$gebtab[tag],$gebtag[monat],$gebtag[jahr]);

    //timestamp von heute erzeugen
    $tsheute=time();

    //Normales Datum von heute umwandeln
    $tagheute=date("d", $tsheute);

    $monatheute=date("m", $tsheute);

    $jahrheute=date("Y", $tsheute);

    //Das Jahr in dem man volljährig wird
    $jahrvoll=$jahrheute-18;

    //timetsamp des heutigen tages desjahres in dem man volljährig wird
    $tsvoll=mktime(0,0,0,$tagheute,$monatheute,$jahrvoll);


    //wenn timestamp des geburtstages < als der tag an dem man 18 wird
    if($tsgeb <= $tsvoll)
    {
      echo 'Älter als 18';
    }

    if($tsgeb > $tsvoll)
    {
      echo "noch nicht 18";
    }
    }
    else
    {
      echo "über 18";;
    }

    ?>
    Vielleicht hab ich da auch irgendeinen blöden denkfehler drin! Hoffe mir kann jemand helfen. Danke im Vorraus!

  • #2
    - Zähle zum Jahr 18 dazu
    - Wenn das Datum < 01.01.1970 ist oder < time(), dann ist er 18

    PHP-Code:
    $gebtag['tag']=25;
    $gebtag['monat']=11;
    $gebtag['jahr']=1987;

    $gebtag['jahr'] += 18;

    if (
    $gebtag['jahr'] < 1970)
      
    $ist18 true;
    else {
      
    $geb_timestamp strtotime($gebtag['jahr'].'-'.$gebtag['monat'].'-'.$gebtag['tag']);
      
    $ist18 $geb_timestamp time();

    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Prima gelöst Mrhappiness, auf so einen einfachen Weg wäre ich auf Anhieb gar nicht gekommen

      Nichts destotrotz hat mich dieser Thread inspiriert eine etwas dynamischere Funktion zur Altersüberprüfung zu schreiben, sie erwartet ein deutsches Datumformat, dass kann aber leicht geändert werden.

      PHP-Code:
      <?php
              
      function ifAge ($check){
                      if (!
      preg_match ("%(\d{1,2}.\d{1,2}.\d{2,4})\s*([<>=]{1,2})\s*(\d+)%"$check$check))
                              return 
      false;
                      
      $date   explode ("."$check[1]);
                      
      $date   mktime (000$date[1], $date[0], $date[2]);
                      
      $date   strtotime ("+ $check[3] years"$date);

                      eval (
      "\$value = (" time() . $check[2] $date);");
                      return 
      $value;

              }
              echo (int) 
      ifAge ("27.12.1982 > 18");
      ?>
      ebenso kann man überprüfen, ob dass Alter "kleiner als" ist.
      Ich weiß, ist nicht schön gecodet aber äussert funktional
      54 68 65 72 65 20 61 72 65 20 6F 6E 6C 79 20 31 30 20 74 79 70 65 73 20 6F 66 20 70 65 6F 70 6C 65 20 69 6E 20 74 68 65 20 77 6F 72 6C 64 3A A 54 68 6F 73 65 20 77 68 6F 20 75 6E 64 65 72 73 74 61 6E 64 20 62 69 6E 61 72 79 2C 20 61 6E 64 20 74 68 6F 73 65 20 77 68 6F 20 64 6F 6E 27 74

      Kommentar

      Lädt...
      X