Mailinglisten-Archive |
Hi, Klaus Nordmann schrieb: > > Hi, > > ich arbeite an einem System, in dem PHP den Kennwortschutz als basic-realm > mit Header() erzeugt. > > Das funktioniert so auch hervorragend, außer in einem Fall: > > Wenn der User den Browser öffnet und auf das System geht, also bei der > ersten Anmeldung in einer Session, hat der Browser die > Authentifizierungsdaten natürlich noch nicht. > Er kommt also auf die Site, das System bekommt keinen PHP_AUTH_USER und > kein PHP_AUTH_PW und fordert zur Anmeldung auf. > Jetzt gibt der User seine Daten ein, klickt auf ok und das System bekommt > nun seine Anmeldung. > Es stellt fest, dass der Timeout abgelaufen ist und fordert den User > abermals zur Authentifizierung auf. > Erst danach kommt er hinein. Erst erfolgt die Useraktion, dann der Blick in die Logtabelle. Wenn in der DB Zeitpunkt x (für den letzten Click) steht, mußt Du nur Timeoutoffset y dazuaddieren und das von der aktuellen Zeit z abziehen. Fällt der Vergleich positiv aus, ist das ein Timeout. z-(x+y) < 0 -> kein Timeout z-(x+y) > 0 -> Timeout Zumindest hatte ich auf die Weise noch keinen Doppellogin. Version ohne DB if($C->validlogin) { if(!isset($C->lastpageimpression)) { $maxtime = time() + $cfg["admintimeoutoffset"]; } else { $maxtime = $C->lastpageimpression + $cfg["admintimeoutoffset"]; } if($maxtime < time()) { $C->validlogin = FALSE; $resetadmin = TRUE; } else { $C->validlogin = TRUE; $C->lastpageimpression = time(); $resetadmin = FALSE; } } mit freundlichen Grüßen, oK.
php::bar PHP Wiki - Listenarchive