Mailinglisten-Archive |
Hallo! Ich bin gerade dabei mit PHP_AUTH_USER herumzuspielen. Ich habe mir den Code aus dem phpMyAdmin geklaut und nachvollzogen. Klappt auch alles. Nur möchte ich dem Benutzer einen "Logout" anbieten. phpMyAdmin arbeitet das mit einer Variable namens $old_usr. Dies kann ich leider nicht nutzen, da ich in den folgenden Seiten und Scripten mit Sessions arbeite und, sobald die Session nicht mehr existiert (also auch bei direktem Aufruf der entsprechenden Seiten) auf die Login-Seite redirecte. Der Browser fügt dann die bereits eingegebenen Daten für PHP_AUTH_USER und PHP_AUTH_PW ein :-( Außerdem kann ich mit dieser old_usr-Lösung nach dem gewollten Ausloggen nicht mehr denselben Usernamen er- neut eingeben :-( Ich möchte, daß - der Benutzer sich ausloggen kann und sich dann auch wieder unter demselben Usernamen anmelden kann - wenn ein direkter Zugriff auf die "geschützten" Files erfolgt, der User auf die Loginpage redirectet wird und dort _auf jeden Fall_, egal ob der der Browser die Login-Daten gespeichert hat oder nicht - sich neu anmelden muß. Ach so, ich arbeite mit PHP4! Leider hab icm im ML-Archiv nichts gefunden. Ich habe zwar massig gefunden, wie ich den Login und die Überprüfung realisiere, mit Sessions arbeite, aber nicht, wie ich das Logout zufriedenstellend hinkriege :-( login.php ------ function auth() { Header("status: 401 Unauthorized"); Header("HTTP/1.0 401 Unauthorized"); Header("WWW-authenticate: basic realm=\"Kundenbereich\""); echo "<HTML><HEAD><TITLE>AccessDenied</TITLE></HEAD>\n"; echo "<BODY BGCOLOR=#FFFFFF><BR><BR><CENTER><H1>AccessDenied</H1>\n"; echo "</CENTER></BODY></HTML>"; exit; } if (empty($PHP_AUTH_USER) && isset($REMOTE_USER)) $PHP_AUTH_USER=$REMOTE_USER; if (empty($PHP_AUTH_PW) && isset($REMOTE_PASSWORD)) $PHP_AUTH_PW=$REMOTE_PASSWORD; if (!isset($old_usr)) { if(empty($PHP_AUTH_USER)) { $AUTH=TRUE; } else { $AUTH=FALSE; } } else { if ($old_usr==$PHP_AUTH_USER) { $AUTH=TRUE; unset($old_usr); } else { $AUTH=FALSE; } } if ($AUTH) { auth(); } else { [Daten gegen mySQL-DB überprüfen und ggf. $AUTH wieder auf TRUE setzen] $verified = !$AUTH; if ($verified) { session_start(); session_register("verified"); Redirect("Header: welcome.php"); } else { Redirect("Header: $PHP_SELF"); } welcome.php --------- session_start(); if (!$verified) { session_destroy(); Header("Location: login.php"); } Falk
php::bar PHP Wiki - Listenarchive