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