PHP Firefox - Mehrfachladen

Brabax

New member
#1
Hallo Leute,

ich habe da mal ein ganz komische Phänomen mit dem ich hier gerade garnicht klar komme.

Ich bastele gerade im Rahmen eines größeren Projektes an einem kleinen PHP-Script, was mir einfach den Inhalt eines Ordners auflistet und per Klick auf einen Unterordner in diesen wechseln soll.
So weit so gut, von der Sache her funktioniert alles.
Um mir die Navigation zu ermöglichen, gebe ich in der URL immer den Namen des nächsten Ordners mit, in den gewechselt werden soll (immer nur einstufig möglich).

Probiere ich mein Script im IE aus, ist alles dufte und ich kann gemütlich durch die gesamte Ordnerstruktur klettern.
Im FF hingegen, geht dies nicht.
Nach ewig langem suchen, bin ich dann dahinter gekommen, dass der FF mir meine Requests immer gleich vier mal sendet (also jede URL 4x aufruft) und dass ich deswegen mit meinem Script nicht zurecht komme.

Das Script arbeitet so:
Ich merke mir in der Session einen zufällig generierten Wert und schreibe anschließend in eine Datei, die diesen Zufallswert im Namen hat.
In der Datei steht dann der aktuelle Pfad.
Wird in der URL ein change_to = XXX gesetzt, wird von dem gemerkten Pfad aus versucht in den übergebenen Pfad zu wechseln, wobei ".." als "aufwärts" behandelt wird.

[Zunächst stand dieser Merk-Pfad auch in einer Session-Variable - allerdings hat der FF diese immer nach jedem 8. Klick getötet oder mir mit dem Mehrfachladen diese nutzlos gemacht.]

Durch das Mehrfachladen, kann ich eigentlich tun was ich will, der Request kommt immer vier mal an und ich wechsele bei z. B. einem Klick auf ".." (immer wieder mal) 4 Ordner nach oben.

Wie gesagt, im IE geht es einwandfrei.

Ich habe darauf hin einfach mal jeden Request, der bei meinem Script ankommt, loggen lassen (IE und FF) - das kam dabei heraus, als ich bei beiden Browsern die selben Ordner durchgeklickt habe:

(der jeweils letzte Wert in der URL ist ein Zufallswert auf Microtime-Basis, damit FF und IE den Link nicht immer wieder als den selben erkennen und ihm auch tatsächlich folgen)

Firefox
Code:
index.php?module=5&action=8.00
index.php?module=5&action=8.00&change_to=modules&0.9164=0.9164
index.php?module=5&action=8.00&change_to=modules&0.9164=0.9164
index.php?module=5&action=8.00&change_to=modules&0.9164=0.9164
index.php?module=5&action=8.00&change_to=modules&0.9164=0.9164
index.php?module=5&action=8.00&change_to=036578329f4509e&0.9752=0.9752
index.php?module=5&action=8.00&change_to=036578329f4509e&0.9752=0.9752
index.php?module=5&action=8.00&change_to=036578329f4509e&0.9752=0.9752
index.php?module=5&action=8.00&change_to=036578329f4509e&0.9752=0.9752
index.php?module=5&action=8.00&change_to=modules&0.8256=0.8256
index.php?module=5&action=8.00&change_to=modules&0.8256=0.8256
index.php?module=5&action=8.00&change_to=modules&0.8256=0.8256
index.php?module=5&action=8.00&change_to=modules&0.8256=0.8256
index.php?module=5&action=8.00&change_to=file_manager&0.3297=0.3298
index.php?module=5&action=8.00&change_to=file_manager&0.3297=0.3298
index.php?module=5&action=8.00&change_to=file_manager&0.3297=0.3298
index.php?module=5&action=8.00&change_to=file_manager&0.3297=0.3298
index.php?module=5&action=8.00&change_to=..&0.0578=0.0579
index.php?module=5&action=8.00&change_to=..&0.0578=0.0579
index.php?module=5&action=8.00&change_to=..&0.0578=0.0579
index.php?module=5&action=8.00&change_to=..&0.0578=0.0579
index.php?module=5&action=8.00&change_to=..&0.8474=0.8475
index.php?module=5&action=8.00&change_to=..&0.8474=0.8475
index.php?module=5&action=8.00&change_to=..&0.8474=0.8475
index.php?module=5&action=8.00&change_to=..&0.8474=0.8475
Internet Explorer
Code:
index.php?module=5&action=8.00
index.php?module=5&action=8.00&change_to=modules&0.2305=0.2305
index.php?module=5&action=8.00&change_to=036578329f4509e&0.7689=0.7689
index.php?module=5&action=8.00&change_to=modules&0.3189=0.3189
index.php?module=5&action=8.00&change_to=file_manager&0.0376=0.0376
index.php?module=5&action=8.00&change_to=..&0.5109=0.5109
index.php?module=5&action=8.00&change_to=..&0.0145=0.0145
index.php?module=5&action=8.00&change_to=..&0.3858=0.3859
index.php?module=5&action=8.00&change_to=..&0.6733=0.6734
Versuchte Lösungen:
Sämtliche Addons im FF deaktiviert => habe das Problem weiterhin.
Entfernen von ".." aus der URL => selbes Problem
Code 200000 Mal gelesen => es sollte funktionieren und im IE tut es das auch.

Wer weisz Rat?
 

Chakky

Member of Honour
#2
Was sagt Firebug dazu? Gibt es dort irgendwelche Probleme?

Benutzt du irgendwelches Javascript um die Links abzufangen und auszuführen? Wird das evtl "fehlerhaft" Interpretiert.

Firefox hat auch eine Precaching funktion keine Ahnung ob die soweit greift das komplette php Seiten greifen, ich dachte eigtl nur auf Bilder und solche sachen. Wäre vielleicht ein Ansatz.

Führen andere Browser ebenfalls das Script falsch aus?
 

Brabax

New member
#3
Hi :)

Was sagt Firebug dazu? Gibt es dort irgendwelche Probleme?
Firebug sagt garnichts dazu. Keine Fehler, keine Aufälligkeiten.

Benutzt du irgendwelches Javascript um die Links abzufangen und auszuführen? Wird das evtl "fehlerhaft" Interpretiert.
Ich benutze kein JavaScript. Alles reines PHP mit $_GET :)

Führen andere Browser ebenfalls das Script falsch aus?
IE, Opera und Chrome funktionieren ohne Probleme.
Das Request-Log zeigt auch hier, dass jeder Aufruf nur ein Mal stattfindet.

Firefox hat auch eine Precaching funktion keine Ahnung ob die soweit greift das komplette php Seiten greifen, ich dachte eigtl nur auf Bilder und solche sachen. Wäre vielleicht ein Ansatz.
Ich schau mal ob ich in der Richtung etwas finde.

lG
 

Brabax

New member
#4
Okay ... es ist definitiv ein Fehler im FF ... der wohl irgendwie 5.000.000 Gründe haben kann.

Ich habe mir jetzt so geholfen:

Code:
if($_SESSION['BACKLINK'] != $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] || !isset($_GET['change_to']))
{ ... REST DES CODES ... }
In _SESSION['BACKLINK'] habe ich am letzten Punkt im Script die URI hinterlegt.
Und change_to muss als Ausschluss da sein, damit man bei mehrfach-Klicks des Basis-Menue-Links noch das Modul laden kann.

Dadurch ist der Fehler verschwunden, weil es nur eine Anfrage zulässt.

Wenn dennoch jemand weisz, was der FF da treibt - immer her damit.
Die Theorien die ich bisher gesehen habe, die aber alle nicht zutrafen waren:

-> Fehler im HTML
-> Pipelining aktiviert
-> Prefetching aktiviert

Beste Grüße
 
Oben