Systemvoraussetzung
- Linux
- Windows
- PHP 3
- PHP 4
- PHP 5
Datei(en)
checkdate.php
Problem
Sie kennen sicherlich das Problem, das entstehen kann, wenn ein Besucher
Ihrer Seite z. B. sein Geburtsdatum in einem Formularfeld angeben kann. Die
Fehlerquote hierbei ist extrem hoch, und die Daten bei einer Falscheingabe sind
für Sie nutzlos. Sie müssen also das eingegebene Datum auf seine Gültigkeit
hin überprüfen.
Lösung
Die PHP-Funktion
checkdate() erledigt diese Aufgabe zuverlässig, auch unter
Berücksichtigung von Schaltjahren. Der Funktion müssen wir lediglich den Tag,
den Monat und das Jahr übergeben. Folgende Kriterien muss ein korrektes
Datum erfüllen:
1. Das Jahr muss zwischen 1 und 32767 liegen.
2. Der Monat muss zwischen 1 und 12 liegen.
3. Der Tag muss zwischen 1 und 31 liegen (Schaltjahre werden berücksichtigt).
Als ersten Parameter erwartet die Funktion checkdate() den Monat, dann
den Tag und zum Schluss das Jahr. Handelt es sich bei dem Datum um ein
korrektes Datum, so gibt checkdate() den booleschen Wert „TRUE“ zurück,
ansonsten „FALSE“.
Das nachfolgende Beispiel erledigt genau diese Aufgabe. Es kann dabei mit
unterschiedlichen Formaten umgehen. Sie müssen lediglich die einzelnen
Parameter setzen und erhalten als Rückgabewert entweder „TRUE“ für ein
korrektes Datum oder „FALSE“.
Folgende Parameter werden für die Funktion check_date() benötigt:
- @param string $date
Das zu prüfende Datum
- @param string $format
Der Aufbau des Datums (z. B. Tag/Monat/Jahr) mögliche Werte sind d,m,Y
d => Tag, m => Monat, Y => Jahr
- @param string $sep
Das Trennzeichen des Datums
- @return bool
true, wenn es sich um ein korrektes Datum handelt, ansonsten false
Die Funktion checkdate() wird mit dem zu prüfenden Datum, dem Aufbau
des Datums sowie des Trennzeichens aufgerufen (56, 65). Mit strpos() (42-44)
suchen wir nach den Parametern für den Aufbau des Datums, also ob es
27.03.1971, 03.27.1971 oder alternativ vielleicht 1971.03.27 ist.
Anhand des übergebenen Separators und des Aufbaus können wir jetzt das
Datum in seine Bestandteile zerlegen (46) und es der Funktion checkdate()
(48) zur Überprüfung geben. Das Ergebnis der Überprüfung (true oder false)
geben wir der aufrufenden Stelle zurück.
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
|
function check_date($date,$format,$sep)
{
$pos1 = strpos($format, 'd');
$pos2 = strpos($format, 'm');
$pos3 = strpos($format, 'Y');
$check = explode($sep,$date);
return checkdate($check[$pos2],$check[$pos1],$check[$pos3]);
}
$dateA = '27.03.1971';
echo $dateA . '<br>';
if(check_date($dateA,"dmY","."))
echo 'Das Datum ist korrekt.<br>';
else
echo 'Bitte überprüfen Sie Ihr Datum!<br>';
$dateB = '02-29-2006';
echo $dateB . '<br>';
if(check_date($dateB,"mdY","-"))
echo 'Das Datum ist korrekt.<br>';
else
echo 'Bitte überprüfen Sie Ihr Datum!<br>'; |
Beispiel 2.22: checkdate.php
Ausgabe im Browser
27.03.1971 Das Datum ist korrekt.
02-29-2006
Bitte überprüfen Sie Ihr Datum! |
Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!
Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.
|