phpbar.de logo

Mailinglisten-Archive

[php] Auth und Logout

[php] Auth und Logout

Falk Brockerhoff falk.brockerhoff_(at)_kruchem-schmitt.de
Mon, 13 Nov 2000 02:21:57 +0100


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