Wolfram Hüttermann: Geburtstag Check

Beitrag lesen

Hi Forumler,

ich habe ein Formular für eine Domainbestellung wo man sein Geburtstdatum eingeben soll um sich anzumelden, aber es dürfen nur Leute sich die Domain bestellen die älter als 18 Jahre sind...
Nur habe ich keinerlei Ahnung wie ich das überprüfen soll... hat jemand Links oder nen Tip wie man das anpacken kann?
Auch gibt er mir komischerweise immer noch die Monate im englischen Format aus obwohl ich bei setloale de eingestellt habe...

mein bisherigen Code:
<?
setlocale(LC_TIME, 'de_DE');

$monate = array();
$monate[1] = "Januar";
$monate[2] = "Februar";
$monate[3] = "März";
$monate[4] = "April";
$monate[5] = "Mai";
$monate[6] = "Juni";
$monate[7] = "Juli";
$monate[8] = "August";
$monate[9] = "September";
$monate[10] = "Oktober";
$monate[11] = "November";
$monate[12] = "Dezember";

$monate = array();
for($i=1; $i<=12; $i++)
{
$monate[$i] = strftime("%B", mktime(0, 0, 0, $i, 0, 2003));
}

// Formularfeld für den Tag
echo("<select name="geb[tag]">\n");
for($i=1; $i<=31; $i++)
{
echo("<option value="".$i."">\n");
echo($i.".\n");
echo("</option>\n");
}
echo("</select>\n");

// Formularfeld für den Monat
echo("<select name="geb[monat]">\n");
for($i=1; $i<=12; $i++)
{
echo("<option value="".$i."">\n");
echo($monate[$i].".\n");
echo("</option>\n");
}
echo("</select>\n");

// Formularfeld für das Jahr
echo("<input type="text" name="geb[jahr]" />\n");
?>

Liebe Grüße

Christoph

Hallo Christoph,

dein Ansatz war gar nicht einmal so schlecht. Ich werde die select-Box des Tag mit <select name="tag">, die select-Box des Monats mit
<select name="monat">  und das Textfeld des Jahres mit <input type="text" name=" jahr" /> bezeichnen. Darüber hinaus bette ich einmal deinen Programmcode in das folgende Formular ein.
<form action="irgendwohin.php" method="post" onsubmit="return Ueber18()">
.....

Dein Programmcode mit meinen Bezeichnungen

...........

<input type="submit" value="Abschicken" />

Der Witz an der Sache ist, dass wir das Abschicken verhindern (das prüft die Javascript-Funktion Ueber18() ), wenn ein Datum angegeben worden ist, dass danach liegt.

Ich skizziere einmal diese Funktion.

function Ueber18()
{
  var Objekt=document.forms[0];
  var heute=new Date() // gibt das heutige Datum aus.
  var dieserMonat=heute.getMonth();
  var dieserTag=heute.getDate();
  var diesesJahr=heute.getYear(); // Vorsicht, evtl. musst du 1900
                                  // dazu addieren
  if(diesesJahr-Objekt.jahr.value < 18 ||
     (diesesJahr-Objekt.jahr.value == 18 && dieserMonat <    Objekt.monat.value) ||
    (diesesJahr-Objekt.jahr.value ==18 && dieserMonat == Objekt.monat.value && dieserTag < Objekt.tag.value))
   {
      alert("Sie sind noch keine 18!")
      return false;
   }
    return true;

}

Du solltest aber eventuell sicher gehen, dass der Benutzer wirklich nicht minderjährig ist. Da würde ich dir empfehlen, bei "erfolgreicher Anmeldung" die IP,  das Anmeldedatum und die Anmeldezeit  des Benutzers in einer Datenbank zu speichern.

Außerdem musst du alle Seiten, auf die man nur mit Anmeldung zugreifen darf, mit einer Session-Variable schützen.

Soviel von mir,

Grüße,

Wolfram