php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Datum auf Volljährigkeit überprüfen


 
Koss0r
23-11-2005, 14:10 
 
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.


<?

//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!

 
mrhappiness
23-11-2005, 14:15 
 
- Zähle zum Jahr 18 dazu
- Wenn das Datum < 01.01.1970 ist oder < time(), dann ist er 18

$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();
}

 
fackelkind
24-11-2005, 18:13 
 
Prima gelöst Mrhappiness, auf so einen einfachen Weg wäre ich auf Anhieb gar nicht gekommen :D

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
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 (0, 0, 0, $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 :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:29 Uhr.