mit php 18er check realisieren



  • Hallo @ all,
    ich möchte in meinen Onlineshop einen 18er Check integrieren. D.h. Ich habe in eine r datenbank ein feld mit dem tag, monat und dem jahr. Wie kann ich da jetzt prüfen, ob die Person volljährig ist. Ich hab mir schon überlegt, dass mit dem unix timestamp zu machen, aber der reicht nur bis 1970 zurück. wenn jetzt jemand älter ist, bekomm ich ja dann keinen wert. wie mach ich das am besten?

    Vielen Dank schonmal für die Hilfe
    gruß worm



  • also in der datenbank hast du das geburtsdatum stehen? warum als tag, monat, jahr und nicht als DATE? könnte mir denken, daß dann die datenbank sowas kann.



  • Worm schrieb:

    Ich hab mir schon überlegt, dass mit dem unix timestamp zu machen, aber der reicht nur bis 1970 zurück.

    brauchst keine timestamps, wenn du vergleichen willst.
    seien heute das datum t1.m1.j1
    dann rechne ich schnell mal j1=j1-18
    und hab das datum vor genau 18 jahren.
    sei das geburtsdatum des kunden t2.m2.j2

    dann kannste sagen
    if(j2<j1) return true;
    if(j2>j1) return false;
    if(m2<m1) return true;
    if(m2>m1) return false;
    if(t2<=t1) return true;
    return false;

    wobei true heißt, daß der kunde alt genug ist.



  • hm, ich würde ausnutzen, dass ein String-Vergleich, bei passender Speicherung der Strings hier genau das richtige liefert. 🙂

    Du speicherst die Daten so: yyyy-mm-dd und ziehst von dem aktuellen Datum 18 Jahre ab.

    $chkdate = (date('Y') - 18) . date('-m-d');
    $birthday = '1988-03-04';
    if ($birthday <= $chkdate) {
        return true;  // User ist 18, also true zurückliefern
    }
    return false;
    

Anmelden zum Antworten