robotto7831a Geschrieben 10. September 2005 Geschrieben 10. September 2005 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 Zitieren
robotto7831a Geschrieben 11. September 2005 Autor Geschrieben 11. September 2005 Hat sich erledigt. Ich habs hinbekommen. Zitieren
shad0w Geschrieben 11. September 2005 Geschrieben 11. September 2005 Hi, denk dran, dass man ueber solche skripte leicht an systemdateien ran kommt ... verzeichnis=/etc/ oder so ... das solltest unterbinden, wenn nicht schon getan. Zitieren
robotto7831a Geschrieben 11. September 2005 Autor Geschrieben 11. September 2005 Ist in meinem Skript nicht möglich. Frank Zitieren
etreu Geschrieben 19. Oktober 2005 Geschrieben 19. Oktober 2005 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? Zitieren
geloescht_JesterDay Geschrieben 20. Oktober 2005 Geschrieben 20. Oktober 2005 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. Zitieren
etreu Geschrieben 20. Oktober 2005 Geschrieben 20. Oktober 2005 Das Problem mit den Verzeichnissen besteht weder so, noch in änlicher Form. Es geht einzig und allein um den Reload. Das Cookie funktioniert leider nicht allen Fällen. Zitieren
geloescht_JesterDay Geschrieben 20. Oktober 2005 Geschrieben 20. Oktober 2005 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? Zitieren
robotto7831a Geschrieben 20. Oktober 2005 Autor Geschrieben 20. Oktober 2005 Also ich habe es hinbekommen. Ich werde es heute Abend erklären wie ich es gemacht habe. Zur Lösung beigetragen hat eine ID und natürlich Sessions. Frank Zitieren
robotto7831a Geschrieben 20. Oktober 2005 Autor Geschrieben 20. Oktober 2005 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 Zitieren
Empfohlene Beiträge
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.