Alters-Check

Mit PHP pruefen, ob jemand schon 18 ist.

$tag=intval($_GET['tag']);
$monat=intval($_GET['monat']);
$jahr=intval($_GET['jahr']);
if ($jahr<1890)
  { $jahr+=1900; }

$geburi=mktime(0,0,0,$monat,$tag,$jahr);
$heutevor18=strtotime ("-18 years");
if (($geburi<$heutevor18) OR ($jahr<1970))
  { /* OK, aelter als 18 */ }
else
  { /* juenger als 18 */ }

Geburtsdatum: Tag:   Monat:   Jahr (vierstellig):

BezeichnungDatum/Zeit (aus Timestamp)Timestamp
Jetzt26-Apr-2024 02:43:091714092189
Geburtstag (15.4.1973)15-Apr-1973 00:00:00103676400
Heute vor 18 Jahren26-Apr-2006 02:43:091146012189

Entscheidung mit Timestamp-Vergleich und/oder Geburtsjahr < 1970

Gemaess obigem Code. Beste Variante.
if ((103676400<1146012189) OR (1973<1970))

Alles in Ordnung, ueber 18!

Entscheidung nur mit Timestamp-Vergleich (Geburtsdatum kleiner als Heute vor 18 Jahren)

Schwachstelle: Jahrgang < 1970 gibt negative Timestamps.
if ($geburi<$heutevor18)
if (103676400<1146012189)

Alles in Ordnung, ueber 18!

Entscheidung nur mit Timestamp-Rechnung (Heute minus Geburtsdatum)

Schwachstellen: Schaltjahre (auch wer erst in ein paar Tagen 18 wird, kriegt das OK), Jahrgang < 1970
if ((time()-$geburi)>18*365*24*60*60)
if ((1714092189-103676400)>18*365*24*60*60)

Alles in Ordnung, ueber 18!


Siehe auch: PHP-Manual: Datums- und Zeit-Funktionen


<= Zurück zum Inhaltsverzeichnis PHP + SSI