Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

$_server Variable...

Hallo an alle,

habe eine Anwendung geschrieben, bei der sich der Benutzer zunächst einmal anmelden muss. Diese Eingabe lese ich dann über $_SERVER['REMOTE_USER'] aus. In den einzelnen Seiten besteht die Möglichkeit des Logout. Ziel: nach dem Logout sollen alle $_SERVER-Variablen gelöscht werden, sodass das "Zurück" im Browser nicht mehr möglich ist (um wieder in die Anwendung zu kommen).
Daher die Frage: wie kann ich in PHP den kompletten "Inhalt" von $_SERVER löschen?

Hier gehts zum Orginal Eintrag "$_server Variable..." im Forum

Antworten

Zitat:
wie kann ich in PHP den kompletten "Inhalt" von $_SERVER löschen?
Du kannst jederzeit ein unset machen, Sinn und Zweck verstehe ich aber nicht.
Es reicht doch wenn du den Benutzer als "Ausgeloggt" bzw. "Eingeloggt" maktierst und das entpsrechend in deiner Applikation abfrägst.


2.

Aber wie kann ich den User als Ein- bzw Ausgeloggt markieren???


3.

Einen neuen Authentication Header senden. Dann zeigt der Browser die Login-Aufforderung zwar nochmal, aber wenn der User dort nicht wieder Benutzernamen und Passwort eingibt, ist er ausgeloggt. Sicherlich störendes Verhalten, daher wären für dich eventuel Sessions interessant.


4.

Ein Authentication Header ist natürlich eine Alternative, ist aber wie schon erwähnt störend, wenn nochmal die Aufforderung zum Login kommt, wenn der Besucher gerade ein Logout gemacht hat... Zudem möchte ich ja noch im Logout eine benutzerdefinierte Nachricht hinterlassen. Daher wären ja dann schon die Header gesendet, die nicht mehr modifiziert werden können.
Die Variante mit $_SESSION habe ich bereits versucht, funktioniert jedoch nicht. Angenommen $_SESSION['test'] hat auf a.php den Wert 25. Von a.php gelangt man über einen Link auf b.php. Dort wird für $_SESSION[
'test'] der Wert 40 gesetzt. Mache ich nun auf b.php im Bowser ein "Zurück", dann wird der Wert für $_SESSION['test'] wieder auf den Wert 25 "zurückgesetzt". Derselbe Effekt, wenn man $_SERVER['REMOTE_USER'] auf der 2. php-Seite ändert (wäre ja auch eine Variante).
Gibt es dazu sonst noch Ideen???
Wie machen denn das z.B. kommerzielle Seiten? Ich meine, dass nach Aktivierung eines Logout das "Zurück" im Browser nicht möglich ist???


5.

Ich mache das so, das ich auf der Loginseite die werte
$_SESSION["login_name"]
und
$_SESSION["login_pass"]
setze, die frage ich am anfang jedes Seitenaufrufs ab und Validiere diese mit der Datenbank.
Wenn die User ein Login haben wird gechecked welche Rechte sie haben und demnach wird die Seite aufgebaut.
Wenn du also ohne diese Variablen, bzw. mit falschen Werten die Seite xyz.de?mode=admin aufrufst siehst du zwar meine Seite, aber nicht das Admin interface.

Zum Logout einfach die Variablen wieder killen.

PS: das Passwort nicht im Klartext speichern :)


6.

Die session klappt echt gut...
pack einfach bei jeder Datei, die du nur angemeldet betreten darfst das unten stehende vorne dran (noch vor dem Header... sonst funktionierts manchmal nicht;o)

<?session_start();
if(!session_is_registered('user'))
{header("location: http://../../login.php";);
exit;
}
?>


7.

Zitat:
header("location: http://../../login.php";);
Das klappt garantiert nur wenns vor dem Header steht:)


8.

deswegen hab ichs doch auch gesagt ;)
glaub mir, sowas kann man übersehen!


9.

Anmerkung:
Statt dem veralteten
if(!session_is_registered('user'))
...
verwende besser
if (!isset($_SESSION['user']))
...


Hier gehts zum Orginal Eintrag "$_server Variable..." im Forum
 
phpforum.de | Impressum