Hello,
Du weißt aber, dass dadurch die Seite, auf die Du umleitest, in keiner Weise geschützt ist?
Der Gedanke ist mir auch schon gekommen.
Wenn Du willst, dass jede Seite Deines Webs auf diese Weise geschützt wird, musst Du den Code (oder einen ähnlichen) auch in jede Seite einbauen und dafür sorgen, dass er gleich zu Anfang ausgeführt wird.
Ja, ich möchte bestimmte Seiten schützen. Nur müsste ich bei diesem Beispiel dann für jede Seite ein eigenes Eingabeformular haben??
Nein.
Du müsstest nur in jeder Seite ein Stück Code unterbringen, das am Anfang ausgeführt wird, und feststellt, welche Teile der Seite für den jeweiligen Besucher freigegeben sind.
Das geht natürlich nur, wenn die Seiten alle "irgendwie aktiv" sind, d.h. durch einen Programm-Parser auf Programmcode durchsucht werden und dieser dann ausgeführt wird. In Deinem Falle hieße das also, dass alle Seiten als PHP-Seiten ausgefhrt werden müssen.
Der Client des Benutzesr muss dann nur jedes Mal einen Schlüsselwert mitsenden, der ihn als den richtigen Bentuzter ausweist. Dieser Schlüsselwert wird üblicherweise in einem permannenten (der wird auch auf der Festplatte abgelegt) oder transienten (der wird nur im Speicher gehalten) Cookie gespeichert. Auf dem Server kann man dann passend zu diesem Cookie eine Datei mit den laufenden Benutzerdaten führen. Das Verfahren nennt sich dann "Session".
http://de2.php.net/manual/de/ref.session.php
Alternativ kannst Du auch den Webserver die Zugangsberechtigung prüfen lassen mittels HTTP-Authentification.
http://de2.php.net/manual/de/features.http-auth.php
Das ist im für den Anfang einfacher, erfordert aber eben immer die Anmeldung des Users.
Die Session als solche hat übrigens nichts mit der Anmeldung, des Users zu tun. Sie wird nur dazu benutzt, einen User wiederzuerkennen und so leichter feststellen zu können, welche Berechtigungen er hat. Da HTTP ein verbindungsloses Protokoll ist (Nach jedem Request und Response wird die Verbindung wieder abgebaut) muss die "Erkennungs- und Berechtigungskontrolle" bei jedem Request wiederholt werden. Das kann man aber bequem in einige Funktionen verpacken, die dann duech PHP am Anfang eines Scriptes durch eine einzige Zeile hinzugefügt und ausgeführt werden. Man darf die Zeile nur nicht vergessen ;-)
Es gibt also bei HTTP eigentlich auch kein "der User ist eingelogged" (furchtbares denglisches Wort...), sondern nur ein "Der User hat in einem Zeitraum von x Sekunden seine Zugangsdaten übermittelt und dafür einen temporären Zugangsschlüssel erhalten"
Am besten fängst Du erstmal mit der Speicherung und Abfrage von Zugangsdaten in einer Datei an.
Dann kannst Du als nächstes eine Session aufbauen. Es wird dann nämlich bald die Frage kommen, wie man das "Login" eines Users (also dass er in den z.B. letzten 5 Minuten mindestens einen request geschickt hat) erkennen kann, und dafür sind Dateien (oder Datenbanken, aber das führt jetzt zu weit) recht nützlich.
Schau Dir mal die Arrays von PHP an und dann bau Dir eins
http://de2.php.net/manual/de/ref.array.php
<?php ### userarray.php ###
$_user = array();
$_user['loginname'] = array();
$_user['passwort'] = array();
$_user['session'] = array();
$_user['logintime'] = array();
$_user['lastclick'] = array();
und dann später vielelicht noch:
$_user['vorname'] = array();
$_user['nachname'] = array();
$_user['email'] = array();
$_user['website'] = array();
$_user['loginname'][1] = 'hansematz';
$_user['passwort'][1] = 'rosenstolTz';
$_user['session'][1] = '';
$_user['logintime'][1] = 0;
$_user['lastclick'][1] = 0;
$_user['loginname'][2] = 'hansematz';
$_user['passwort'][2] = 'rosenstolTz';
$_user['session'][2] = '';
$_user['logintime'][2] = 0;
$_user['lastclick'][2] = 0;
$_user['loginname'][3] = 'hansematz';
$_user['passwort'][3] = 'rosenstolTz';
$_user['session'][3] = '';
$_user['logintime'][3] = 0;
$_user['lastclick'][3] = 0;
und dann gucken wir uns da mal an:
echo "<pre>\n";
echo htmlspechialchars(print_r($_user),1); ## @ Sven: sieh da, er lent doch dazu :-)
echo "</pre>\n";
?>
Wenn Du Lust dazu hast, dann würden wir als nächsten Schritt mal versuchen, die Daten in einer Datei zu speichern, sie wieder auszulesen und darzustellen.
Und dann schauen wir nach den Fehlermöglichkeiten.
Dann kommt ein Formular, mit dem wir unsere User verwalten können, und dann haben wir schon einen Teil für ein prima "Loginsystem" gebaut.
Fehlt nur noch der für den User und der teil der in jedes Script rein muss.
Dann kommt, wie können wir "Wer ist Online" feststellen und dann "Wie können wir den einzelnen Usern unteschiedliche Rechte zuordnen?
Das ist aber dann schon Profiarbeit :-))
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)