Hello,
Wenn der "Schutz" darin besteht, aus dem vom User eingegebenen Geburtsjahr das Alter zu ermitteln, ist sowieso kein Schutz vorhanden.
Vielleicht mag Andre aber tortzdem gerne wissen, wie das Prinzip funktioniert, auch wenn es in diesem Anwendungsfall nicht sehr sinnvoll ist?
Hallo Andre,
Wenn Du einen Datenwert an PHP übertagen bekommen hast, kannst Du damit eine Bedingung füttern.
Ich nehme an, dass Du im Formular auch ein <form>-Element hast?
<input type="text" name="jahr" size="4">
Bei Dir kommt der Wert dann in $_POST['jahr'] an. Achte auf Groß-/Kleinschreibung für den Index des $_POST-Arrays.
Damit kannst Du nun eine bedingung füttern.
Vorher solltest Du ihn aber auf ein unschädliches Datenformat konvertieren, falls Dir jemand über diesen Eingabekanal einen Roman geschickt hat anstelle des Alters. Das Formular ist ja fälschbar.
Wir benutzen dafür gleich dieselbe Variable, damit wir auch später immer sehen können, woher der Wert kam:
$_POST['jahr'] = intval($_POST['jahr']);
Nun kann in $_POST nur noch ein numerischer Wert, eine Ganzzahl stehen.
Na, und dann musst Du rechnen. Gehen wir mal davon aus, dass jamand im Januar geboren ist, der hat dann eben nach dieser einfachen Methode pech gehabt, denn Du willst ja auch die Dezember-Schäfchen erfassen. Die sollen auch 16 sein.
if ($_POST['jahr'] - 1993 >= 16)
{
## Bedingung erfüllt
seite_anzeigen();
}
else
{
## Weiterleitung zu google
header('Location: http://www.google.de/search?q=%22leider+noch+nicht+16%22=');
}
Vor der Benutzung der header()-Funktion darf noch keinerlei Ausgabe an den Browser stattgefunden haben. Header müssen immer erst alle gesammelt worden sein, bevor die Ausgabe beginnt, da sie ja am Anfang eines request oder einer Response stehen müssen.
Dem Browser wird also mit dem Location-Header die Information gesendet, dass er bitte nochmal anfragen soll unter der angegenenen _vollständigen_ URL.
Für Deine Funktion seite_anzeigen() (musst Du selber schreiben) gibt es verschiedene Lösungsansätze. Der beste wäre wohl, hier die eigentliche Seite per readfile()-Funktion
http://de.php.net/manual/en/function.readfile.php aus einer Datei hinzuzuladen. Die sollte dann aber valides HTML und ggf, CSS und JavaScript enthalten, also keine PHP-Befehle, denn readfile() scheut nicht rein in die Datei, die es an den Browser weiterleitet. Wenn in der Seite noch PHP-Code auszuwerten ist, dann müsstest Du include_once() benutzen dafür. In diesem Falle musst Du aber darauf achten, dass die Datei in einem gesicherten vertrauenswürdigen Bereich abgelegt ist, also keinesfalls von einer URL geholt wird.
Wenn Du auch hier mit einem Location-Header weiterleiten würdest, dann könnte nachher jeder, der den Link kennt, auch ohne Deine "Prüfung" den Link verwenden...
Ein harzliches Glückauf
Tom vom Berg
http://bergpost.annerschbarrich.de
.
--
Nur selber lernen macht schlau