• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Logout-Problem mit Firefox

Hoeth

New member
Hallo, ich habe da ein klitze-kleines Problem:

Ich habe einen Login geschrieben, der wie folgt funktioniert. Nach betätigen des Login Knopfes werden die eingegebenen Daten per Post ans nächste Formular verschickt. Dort wird dann der Inhalt mit einer MySQL Datenbank abgeglichen. Ist alles gleich ist man eingeloggt und der Username wird in einer Session gespeichert. Auf jeder Folgeseite wird dann überprüft, ob in der Session ein Username existiert. Ist dies der Fall, kann man weiter machen, ansonsten wird man zurück auf die Startseite mit dem Login geschickt. Wenn man sich jetzt ausloggt wird einfach nur die Session zerstört. Folglich ist in dieser auch kein Username mehr vorhanden. Wenn ich in meinem Browserfenster nun "zurück" klicke, sollte man nicht wieder in den sicheren Bereich kommen, da die alte Session ja nicht mehr vorhanden ist. Der IE macht das auch alles richtig, nur Firefox scheint sich da irgendwie nen Backup anzulegen, denn dort komme ich per "zurück" wieder in den sicheren Bereich mit dem Username den ich vorher eingegeben hatte und kann sogar einfach weiter navigieren. Das stellt natürlich ne riesen Sicherheitslücke dar und ich wüßte gern, wie ich dieses Problem lösen kann.

Mfg Hoeth
 
was hast du denn für sessions? cookies? du solltest vielleicht mal die Zeilen posten mit denen du die sessions erzeugst und wieder löschst,

und was meinst du mit navigieren? der cache im Browser merkt sich halt alle Inhalte, folglich ist es normal dass man über den vor und zurück-Schalter sich alte Seiten anschauen kann, auch wenn man nicht mehr eingeloggt ist

ansonsten vielleicht hier mal einlesen #php/QuakeNet Tutorial - Eigenes Loginsystem
 
was hast du denn für sessions? cookies? du solltest vielleicht mal die Zeilen posten mit denen du die sessions erzeugst und wieder löschst,
Bin grad net zu Hause, aber ich nutze session_start() und session_destroy(). Soweit ich verstanden habe nutzt der automatisch Cookies bzw wenn diese gesperrt sind den Server.


und was meinst du mit navigieren? der cache im Browser merkt sich halt alle Inhalte, folglich ist es normal dass man über den vor und zurück-Schalter sich alte Seiten anschauen kann, auch wenn man nicht mehr eingeloggt ist

Naja, das Problem ist schon ein anderes: Ich habe 2 Seiten. Eine auf der ich mich einloggen kann und eine weitere, die einen automatisch zurück auf die Startseite schickt, wenn kein Username in der Sessin vorhanden ist (sprich wenn keiner eingeloggt ist).
Jetzt mache ich folgendes:
- Ich logge mich auf Seite1 ein
- Dann wechsle ich auf Seite2, die mich nur rein läßt, wenn ich eingeloggt bin.
- Nun wechsle ich wieder auf Seite1 um mich auszuloggen.

So, gebe ich nun einfach oben die Adresse von Seite2 in meinen Browser ein funktioniert alles ganz normal. Der Browser lädt Seite2, stellt fest, daß ich nicht eingeloggt bin und schmeißt mich wieder zurück auf Seite1 ohne dass ich was auf Seite2 machen kann.
Klicke ich nun allerdings bei Firefox auf den "zurück" Button geht er zurück auf Seite2 ohne mich zurück auf Seite1 zu schmeißen.
Jetzt habe ich vermutet, daß er sich einfach nur den Inhalt gemerkt hat, und die Seite nicht komplett neu geladen hat und ich trotzdem schon ausgeloggt bin, sprich die Session existiert nicht mehr. Also klicke ich auf einen Link, der mich auf eine 3. Seite weiterleitet, die ebenfalls eine Login-Abfrage enthält. Diese müßte mich nun spätestens rausschmeißen, weil die Session ja zerstört wurde, allerdings tut sie dies nicht.
Also komme ich zu dem Schluß, dass Firefox beim Klicken der "zurück"-Taste die Session, die eigentlich schon gelöscht war, wieder in ihrem alten Zustand herstellt.
Und genau das will ich nun irgendwie verhindern. Nur wie?

Danke für den Link. Habs mal überflogen und die Grundidee ist genau die selbe.

-Session erstellen und ID abspeichern
-Abfrage ID vorhanden? ja/nein ---> wenn ja: eingeloggt, wenn nein: ausgeloggt.

Ich hoffe ihr konntet mein Problem jetzt nachvollziehen. Wie gesagt, dieses Problem besteht nur bei Firefox. Der Internet Explorer schmeißt einen bei betätigen des "zurück"-Buttons wieder zurück auf Seite1 zurück, wie es beabsichtigt ist.

Mfg Hoeth
 
sessions sind sowohl auf dem client, als auch auf dem Server hinterlegt
wenn du also mit session_destroy() die Session löschst, passiert dies auf dem Server,
selbst wenn im Firefox noch ein Cookie exisitiert, sollte auf dem Server kein entsprechender Eintrag vorhanden sein -> Anfrage wird abgewiesen
 
Firefox cached die Seiten schlicht und ergreifend. Wenn du da zurück drückst dann holt der nicht etwa die vorherige Seite nochmal vom server sondern holt die einfach aus seinem cache - obwohl man eigentlich ausgeloggt ist. Wenn man zurück gedrückt hat und dann in der vorherigen seite nen link anklickt der vom server geholt werden muss, klappt das nich und man wird auf den login verwiesen.
 
Er sollte dann trotzdem nicht auf die Seite3 gelangen, wenn diese sich nicht vorher im Cache befand.
Zwing Firefox mal die Seite2 neuzuladen nachdem du dich ausgeloggt hast und mit zurück wieder dorthin gelangt bist (F5). Oder besorg die dir Developer Tool Bar für FireFox und stell dort den Cache aus. Wenn dann das Problem immer noch auftritt, stimmt irgendwas nicht :)
 
So, wie es scheint hattet ihr doch recht. Ich habe da irgendwie Müll verzapft. :D
Jedenfalls funktioniert es jetzt einwandtfrei. Ich danke euch allen für die Hilfe und hoffe auch mal wen mit meinem begrenzten wissen aushelfen zu können. :)


Mfg Hoeth
 
Zurück
Oben