Logout nach $PHP_AUTH

MasterGeo

Mitglied
Hallo Leute,

ich habe ein Skript geschrieben bei der ich einen User per:
PHP:
	header('WWW-authenticate: basic realm=Test');

authentifiziere. Klappt alles wunderbar. Jetzt möchte ich,
das er sich auch wieder ausloggen kann. Geht das irgendwie?
Kann ich auf $PHP_AUTH_USER und $PHP_AUTH_PW zugreifen?

Thanx
Georg

Ps: Die Startseite von tutorials.de ist übrigens gehakt worden.
Das Board funktioniert zum Glück noch. Naja gibt wohl Leute die
müssen sich und der Welt immer was beweisen.
 
Bei einem LogOut musst Du das gleiche nochmal machen, nur muss der Benutzer dann auf "cancel" klicken und dann werden keine Werte in die PHP_AUTH_USER und PHP_AUTH_PW eingetragen und schon biste ihn los.

Natürlich kannst Du auch mittels Sessions machen, dann kannst Du einfach die Session löschen und weg ist er.

btw: Wie, wann, wo gehackt? Ist doch alles in Ordnung?! :rolleyes:
 
/*
wenn ich das richtig verstanden haben sollte:
*/

ich glaube mittels unset() 'koennte' das funktionieren..

unset($_SERVER['PHP_AUTH_USER'];
unset($_SERVER['PHP_AUTH_PW'];
 
*shit* Hab es gesehen!
Alle Admins sind informiert.

zu Deinem Prob:
Hast Du mal an die Benutzung von Session gedacht in denen Du PHP_AUTH_USER und PHP_AUTH_PW speicherst und sie bei einem session_destroy() löschst?
 
Ich habe jetzt schon ziemlich lange gesucht und nicht rausgefunden warum ich folgendes Problem habe. Ich hoffe ihr könnt mir helfen.

Die Zeile
PHP:
header('WWW-authenticate: basic realm=Test');
führt bei mir zu der Fehlermeldung
Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/28570/www.team-prometheus.de/claudius/admin/logout.php:10) in /is/htdocs/28570/www.team-prometheus.de/claudius/admin/logout.php on line 11

Wer es sich gerne ansehen möchte kann dies hier machen.
Benutzer: Gast
PWD: Ostern


(bei der "unset"-Variante die weiter oben als Alternative angeboten wird bekomme ich übrigens die Meldung:
Parse error: parse error, unexpected ';', expecting ',' or ')' in /is/htdocs/28570/www.team-prometheus.de/claudius/admin/logout.php on line 11
(wobei Line 11 die Zeile ist in der das erste Mal Unset aufgerufen wird (per Copy and Paste aus dem Forum übernommen))

Vielen Dank im Voraus für eure Mühen
 
Der 1. Fehler kommt weil du schon irgendwas ausgegeben hast. (Wahrscheinlich per echo.) Die header Funktion kann nur benutzt werden so lang nichts ausgegeben wurde.


Die 2. Fehlermeldung kommt, weil da am Schluss vor den ;'s je ein ) hin muss.
 
Wow, vielen Dank für die schnelle Antwort, damit hätte ich nicht gerechnet. ;)

Original geschrieben von Terrance & Philipp
Der 1. Fehler kommt weil du schon irgendwas ausgegeben hast. (Wahrscheinlich per echo.) Die header Funktion kann nur benutzt werden so lang nichts ausgegeben wurde.

Mh, daran liegts wohl nicht. Die ich habe sogar den Header aus dem html-Dokument entfernt und es hat nicht geholfen.
Die Fehlermeldung bleibt bestehen.
Hier der Orginaltext vom Anfang bis zum Ende des php Befehls:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
header('WWW-authenticate: basic realm=Test');
?>


Die 2. Fehlermeldung kommt, weil da am Schluss vor den ;'s je ein ) hin muss.
Mh, habe ich auch probiert. Es kommt keine Fehlermeldung mehr.
Leider kann ich mich nach der Ausführung des Befehls immer noch im geschützten Bereich bewegen auch wenn ich den Browser schließe und wieder öffne.
 
Ok, ich bin ein paar große Schritte weitergekommen. ;)

Ich habe verstanden warum ich die "header" Fehlermeldung bekommen habe: Es lag daran, dass ich in meinem HTML Dokument den php-Teil erst in den Body geschrieben habe und nicht ganz zu Beginn. Dadurch konnte der Header nicht modifiziert haben.

Mein Werk sieht inzwischen so aus (auf den Relevanten Teil gekürzt):
PHP:
<?
function authenticate() 
			{	
			header( "WWW-Authenticate: Basic realm=\"Irgendwas\"");
			header( "HTTP/1.0 401 Unauthorized");
			unset($_SERVER['PHP_AUTH_USER']);
			unset($_SERVER['PHP_AUTH_PW']);
			exit ; 
			} 
if ($logoff==1)
		{ 
		authenticate(); 
		} 		
?>
Ich bekomme zwar keine Fehlermeldung und die Funktion lässt sich auch wundervoll aufrufen. Es wird auch nach einem neuen Benutzer gefragt. Aber leider bewirkt der Druck auf Chancel nicht den erwünschen Logoff. Der Benutzer bleibt eingeloggt und kann den geschützten Bereich weiter aufrufen.
Wenn man jedoch dreimal auf "ok" drückt und somit das falsche PWD eingibt funktioniert der Logoff. Ein mir etwas unverständliches Verhalten.
Gibt es da keine Möglichkeit?
 
ein etwas anderer Lösungsansatz.

Erstell dir ein verzeichniss Logout auf gleicher ebene wie dein geschützes am besten.

Erstelle auch dort einen .htaccess Schutz, mit einem User wie zum Beispiel logout:logout.

Dann erstellt du einen Logout Link in etwa dieser Art:

http://logout:logout@www.deinserver.com/logout/

Nun solltest du eigentlich als "logout" angemeldet sein, und kannst somit nicht mehr auf das geschütze, bzw wichtige Verzeichniss aufrufen.

Sollte so durchführbar sein. (sollte)

Gruässli Prijv
 
Zurück