Mailinglisten-Archive |
Jens Schwehn wrote: > > Wenn der User sich authentifiziert hat, wird der User in eine DB oder > Textdatei geschrieben. Beim naechsten Login wird getestet ob der User > schon abgespeichert wurde. Ist das der Fall, so wird Ihm gesagt das ein > doppelter Login nicht moeglich ist - ansonsten wird er reingelassen. > Ich weis jetzt nicht ob es auch Serverseitig geht - waere wohl das > geschickteste. HTTP kennt kein "Einloggen". Der Aufruf einer geschuetzten Datei geschieht durch uebersenden von Username und Passwort in den Request-Headern. Stimmen die mit definierten "Accounts" ueberein, darf der Browser die Datei empfangen. Clickt der Benutzer dann auf einen weiteren Link im geschuetzten Bereich, uebermittelt der Server zunaechst wieder einen Auth-Header, woraufhin der Browser automatisch wieder das zuvor eingegebene Username/Passwort-Paar zurueckschickt und somit fuer den User transparent jedes Mal aufs Neue die Authentifizierung vornimmt, sodass es fuer Ihn aussieht, als gaebe es dort eine Session-Funktionalitaet mit Login. Fuer den Server gibt es keine Unterscheidungsmoeglichkeit zwischen erstem Aufruf einer geschuetzten Seite und darauffolgenden Requests. Fuer den Server "loggt" sich der Benutzer jedes Mal aufs neue ein. Was hier gesucht und benoetigt wird, ist "echte" Session-Funktionalitaet. Hier koennen Stati wie "Betreten" der Seite und Authentifizierung durch einmaligen Login unterschieden werden. Mit Sessions ist ebenfalls moeglich, ein und den selben User nur einmal parallel zuzulassen (Wenn auch nicht unbedingt ratsam). Was trotz Sessions nicht vom Server und der darauf laufenden Anwendung sicher in Erfahrung gebracht werden kann, ist, wann ein Benutzer die Seiten "Verlaesst". Man kann dem Benutzer zwar einen Logout-Knopf bereitstellen, aber kann sich nicht darauf verlassen, dass er diesen auch immer drueckt (z.b. wenn der Browser abschmiert). Daher muss die Session nach einer bestimmten Zeit eben auch verfallen (Expire). Gerade, wenn Du nur einen Login pro User zulassen moechtest, ist der Expire-Zeitraum aber schwierig zu waehlen: Setzt Du Ihn zu kurz an, kann der Benutzer u.U. nicht mehr vernuenftig mit der Seite arbeiten, weil er staendig dank Expire "rausfliegt" und sich wieder neu anmelden muss. Setzt Du den Zeitraum zu kurz an, muss der Benutzer u.U. erst einmal lange warten, bevor er sich nach einem Browsercrash wieder anmelden kann. Mehr Informationen zu Sessions findest Du auf: http://phplib.netuse.de/ http://www.php.net/manual/ref.session.php Wobei die php-eigenen Session-Funktionen erst mit PHP4 eingefuehrt wurden. Mit der PHPlib kannst Du die gleiche (bzw. noch flexiblere) Funktionalitaet auch auf PHP3 benutzen. Gruss, Markus
php::bar PHP Wiki - Listenarchive