Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Hi,

denk dran, dass man ueber solche skripte leicht an systemdateien ran kommt ... verzeichnis=/etc/ oder so ... das solltest unterbinden, wenn nicht schon getan. ;)

  • 1 Monat später...

Hi,

ich habe aktuell auch ein kleines Problem mit dem Reload einer Seite.

Hast du das weitere anhängen unterdrückt oder konntest du feststellen, dass der User die Seite erneut geladen hat?

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.

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?

  • Autor

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.