Zum Inhalt springen

Reload einer Seite mitbekommen


Empfohlene Beiträge

Hallo zusammen,

ich bastel gerade an einem Verzeichnisanzeige in PHP. Wenn jemand auf das Verzeichnis test klickt, dann wird


.....php?verzeichnis=test
[/code]

als GET übermittelt. Dann hänge ich den Verzeichnisnamen hinten an eine Session Variable dran die bereits den bisherigen Pfad enthält. Soweit so gut.

Wenn jetzt aber jemand F5 drückt dann hängt der wieder test hinten an die Session Variable dran. Wie bekomme ich jetzt mit, dass der Mensch F5 gedrückt hat und ich den Verzeichnisnamen nicht hinten an die Session Variable hängen muss.

Ich könne mir jetzt in einer Session Variable einen Merker setzen um zu wissen, dass ich in der Funktion schon mal war. Aber wer setzt den Merker bei einem neuen Verzeichnis wieder zurück so das ich wieder in die Funktion renne und den Verzeichnisnamen hinten dran hänge?

Habt Ihr andere Vorschläge oder Ideen?

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...
oder konntest du feststellen, dass der User die Seite erneut geladen hat?

Kann er nicht feststellen... man kann eine Seite nicht nur mit Drücken von F5 neu laden, auch der Klick auf den Reload-Button lädt die Seite neu, genauso wie ein Druck von Enter in der Adresszeile oder das Aufrufen der Adresse aus der Histroy bzw. Vor- oder Zurück-Button. Davon bekommst du auf dem Server nichts mit und das ist auch garnciht vorgesehen. Sobald der Server die Seite an den Client geschickt hat, ist sie ihm egal und er hat die Verbindung "vergessen" (HTTP ist stateless).

Was du machen kannst, ist einen Cookie setzen, z.B. mit einen md5 des serialized Arrays (*) mit den möglichen Verzeichnissen. Wenn das mit dem aktuellen Verz. aus der Session übereinstimmt, ist die Chance sehr groß, dass es ein reload ist. Aber eben nciht 100%, weil das Unterverz. ja theoretisch so aufgebaut sein könnte, wie das darüber.

Am einfachsten ist es doch, wenn du vor dem Anhängen an die Session erstmal prüfst, ob dieses Verz. überhaupt existiert. Wenn Ja hängst du es an und alles is OK, wenn das Verz nicht existiert, ist es entweder ein Reload oder der Benutzer hat etwas eigenes in die URL Zeile eingegeben (verzeichnis=temp geändert in verzeichnis=config oder so) oder ein Übertragungsfehler.

EDIT:

*: md5 deshalb, weil damit eine maximale Länge (32 Byte) und dennoch eine Eindeutigkeit erreicht wird. Die Infos, die du in einem Cookie speichern kannst sind nicht beliebig lang. Ein (sehr) großes Verzeichniss würde also u.U. Probleme bereiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem mit den Verzeichnissen besteht weder so, noch in änlicher Form. Es geht einzig und allein um den Reload.

Das bezog sich vorallem auf den Threadersteller, auch wenn es sich vielleicht nich so angehört hat ;)

Einen Reload bekommst du aber sonst nicht mit. Was genau ist denn das Problem?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habe zwei Session Variablen alteid und neueid.

Beim Start wird alteid auf 0 gesetzt und neueid bekommt eine Zufallszahl aus der microtime zugewiesen.

Dann wid an jedem Link die neueid dran gehangen.

Wenn er jetzt auf einem Link klickt dann wird geprüft ob die alteid != der übergebenen ID ist. Wenn ja dann alteid = übergebene ID und neueid wieder die Zufallszahl. Und die Zufallszahl wird wieder am Link dran gehangen.

Wenn jetzt die alteid = der übergebenen ID ist dann hat jemand F5 gedrückt.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...