Seitenübergreifendes Login
Michael Bieri
- php
Hallo
ich möchte in PHP ein seitenübergreifendes Login machen. Das heisst: Der Benutzer kommt auf die Seite login.php. Dort loggt er sich ein. Geschieht dies erfolgreich, so stehen im verschiedene Seiten offen.
Es geht mir weniger um das Login direkt, als um die seitenübergreifende Speicherung von Daten mit einer Client-Session.
Gruss
Michael
Hi,
Es geht mir weniger um das Login direkt, als um die seitenübergreifende Speicherung von Daten mit einer Client-Session.
Du hast folgende Möglichkeiten:
1.) Authentication-Header,
2.) Cookies,
3.) URL-Parameter,
4.) POST-Parameter.
Der Client muss jeweils dazu bewegt werden, sie mitzuliefern (1. entfällt, ist aber nur mit Servermodul möglich; 2. kann abgelehnt werden; 3. muss von Dir _immer_ entsprechend generiert werden; 4. dito, erfordert zudem Formulare für _jeden_ Request), der Server muss die Daten grundätzlich so auswerten, als wäre der Request der erste (was aus Sicht von HTTP auch stimmt).
Cheatah
Hallo
ja, soweit war ich auch schon ;-). Aber trotzdem danke!
mfG
Michael
Hallo Cheatah,
1.) Authentication-Header,
2.) Cookies,
3.) URL-Parameter,
4.) POST-Parameter.Der Client muss jeweils dazu bewegt werden, sie mitzuliefern (1. entfällt, ist aber nur mit Servermodul möglich; 2. kann abgelehnt werden; 3. muss von Dir _immer_ entsprechend generiert werden; 4. dito, erfordert zudem Formulare für _jeden_ Request), der Server muss die Daten grundätzlich so auswerten, als wäre der Request der erste (was aus Sicht von HTTP auch stimmt).
Wieso entfällt 1.?
Das klappt doch prima mit err401. Man muss nur ebenfalls auf jeder Seite den Zugriff prüfen. Das macht man dann wohl am besten mit mod_rewrite und einer "Access-Maschine". Die wirklichen Seiten liegen dann immer außerhalb des HTTP-Dokumentverzeichnisses.
Mit "Cookie-Sessions" wird doch auch auf jeder Seite geprüft, ob die (logische) Verbindung noch besteht, also der Cookie noch authentisch ist.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi,
1.) Authentication-Header,
Der Client muss jeweils dazu bewegt werden, sie mitzuliefern (1. entfällt, ist aber nur mit Servermodul möglich; [...]
Wieso entfällt 1.?
äh, sorry, ich hab mich missverständlich ausgedrückt: _Bei_ 1. entfällt das Muss, den Client dazu zu bewegen, weil er es bereits von sich aus tut (oder überhaupt nicht kann).
Mit "Cookie-Sessions" wird doch auch auf jeder Seite geprüft, ob die (logische) Verbindung noch besteht, also der Cookie noch authentisch ist.
Nö, der Client sendet den Cookie schlicht und ergreifend zurück, sofern er noch gültig ist und der Request im für den Cookie gültigen Bereich stattfindet.
Cheatah
Hallo,
Hi,
1.) Authentication-Header,
Der Client muss jeweils dazu bewegt werden, sie mitzuliefern (1. entfällt, ist aber nur mit Servermodul möglich; [...]
Wieso entfällt 1.?
äh, sorry, ich hab mich missverständlich ausgedrückt: _Bei_ 1. entfällt das Muss, den Client dazu zu bewegen, weil er es bereits von sich aus tut (oder überhaupt nicht kann).
"Von sich aus" macht das der Cleint auch bei Cookies. Und für beide Möglichkeiten (Cookies und Credentials) gibt es Schalter, die das erlauben, unterdrücken, etc.
Mit "Cookie-Sessions" wird doch auch auf jeder Seite geprüft, ob die (logische) Verbindung noch besteht, also der Cookie noch authentisch ist.
Nö, der Client sendet den Cookie schlicht und ergreifend zurück, sofern er noch gültig ist und der Request im für den Cookie gültigen Bereich stattfindet.
Das entbindet Dich aber nicht von der Pflicht, das Eintreffen eines passenden Cookies am Server VOR jedem Sessionstart der Seite zu überprüfen. Also erst schauen, ob in $_COOKIE ein passender Cookie drin steht, und dann erst session_start() aufrufen. Sonst würde PHP für Dich eine neue Sessionnummer erzeugen, eine neue Sessiondatei anlegen und einen neuen (NICHT: update des alten) Cookie an den Client versenden.
Liebe Grüße aus http://www.braunschweig.de
Tom