Firefox lädt Seite 2 mal?

Hi Leute,

ich hab gestern eine komische Beobachtung machen können, ich bin grad am Entwickeln eines Serverlogs für meine Seiten… Wenn ich jetzt bei jedem Seitenaufruf ein Datensatz in die Datenbank schreiben möchte ist das ja leicht zu realisieren… und auch schnell umgesetzt jetzt habe ich aber dennoch ein Problem o.O ich hab das serverlogscript natürlich auf mehreren Browsern getestet um Fehler auszuschließen und prompt macht der von mir so heißgeliebte Firefox mein Werk zu nichte. Es scheint mir als ob er die Seite ganze 2mal laden würde, den wenn ich in die Datenbank schaue sind da bei jedem mal F5 drücken 2 neue Datensätze vorhanden bei der verwendung vom IE Opera Safari Chrome jedoch nur einer, so sollte es ja auch sein? Woran liegt das? Ich habe das ganze jetzt mal mit einem kleinen Script gefixt das via Sessions arbeitet? aber das ist ja eher “unschön” kennt jemand dieses Problem?

So ein Problem ist mir unbekannt.
Wenn du in deinem Script irgendwie am User-Agent verschiedene Programmteile ausführst, schau doch mal ob der Firefox irgendwas doppelt bekommt (header befehl?) oder irgendwas mehrfach ausgeführt wird, was nicht sein sollte…
Jedenfalls denke ich nicht, dass es am Browser liegt :wink:

mfg Balmung

das hab ich auch gedacht… hab daher die funktion isoliert und nochmals getestet selbes ergebnis, die anderen browser machen es richtig…

Kann sein, dass das gewisse Geschwindigkeitsvorteile bringen kann… Warum der Firefox die Seite aber wirklich 2 mal Requestet ist mir schleierhaft und konnte ich eig. auch noch nie beobachten

vielleicht irgendwelche addons im firefox?
Oder eine unglücklich eingestellte .htaccess und ein firefox, der dann noch etwas mehr vom server abholt, stattdessen aber wegen der htaccess auf dem script nochmal landet?

Hm, nein eigentlich nicht… ich werde das ganze nochmal durchtesten bis dahin werd ich wohl mit den Sessions arbeiten um den Nebeneffekt zu unterbinden… nicht das eleganteste aber weis atm keine andere lösung =)

ich habe das problem bei meinen logaufzeichnungen nicht. benutzt du evtl. irgendwo einen reload mit header(); ? Jedoch würd mich das auch wundern, da du das Problem bei den andren Browsern ja nicht hast…

Also nachdem ich jetzt meinen Code Stück für Stück zerlegt habe, und ich kann Euch sagen, das war keine große Freude bei mehreren hundert Zeilen hab ich den Fehler auf nunmehr zwei Funktionen eingrenzen können.

function get_file_as_string($filename) {
	$tmprslt = file($filename);
	$tmprslt = implode('',$tmprslt);
	return $tmprslt;
};

function cut_tags($trenner1, $trenner2, $text) {
	$wert = explode($trenner1, $text);
	$arr = explode($trenner2, $wert[1]);
	return $arr[0];
}

Bei der Funktion cut_tags liegt glaub der Hund begraben, denn wenn ich in meinem Script nur einmal diese Funktion aufrufe also nur eine bestimmte Stelle aus der Textdatei rausschneide, dann wird es als 1 Aufruf gelogt sind es aber 2 oder mehrere hab ich das Problem mit dem 2 fachen Logeintrag? Aber ich kann mir den nicht erklären…

Wieso nutzt du statt der ersten Funktion nicht file_get_contents?
und bei der zweiten Funktion wirste wohl ein Problem haben, falls der erste Trenner mehrmals vor dem Zweiten Trenner vorkommt:

function cut_tags($trenner1, $trenner2, $text) { $wert = explode($trenner1, $text); $arr = explode($trenner2, implode($trenner1, array_slice($wert, 1))); return $arr[0]; }

Die Funktionen funzen bei mir einwandfrei, daran kann es nicht liegen…
wie schaut denn dein gesamtes konstrukt aus?
kannste das auf pastebin.com oder so mal posten und uns zeigen?

edit: wäre vll auch ganz interessant zu wissen, wie die logging funktion, die dir sorgen macht ausschaut, und wie diese ins projekt eingebunden wird etc.

mfg Balmung

Also ich hab jetzt auf file_get_contents() Umgestellt, und ich hab den Fehler noch weiter eingrenzen können, indem ich die Funktion cut_tags() ganz aus dem Script eleminiert hab und einfach den kompletten Template String aus der Datei index.html die im utf8 Format ohne BOM gespeichert ist via echo ausgegeben hab, selber Fehler wie zuvor.
Ich hab den String mal mit addslashes() maskiert gleicher Fehler.
Die echo am ende sieht so aus:
echo stripslashes($string);
jetzt hab ich einfach mal htmlentities() auf den string angewendet und nochmals getestet o.O es geht firefox macht nur noch einen eintrag in die tabellen, ie und alle anderen funktionieren auch noch…
Ich glaub das Problem liegt also an einem fehlenden header(); oder einen header zu viel?
hab mit header(“content-type: text/html; charset: utf-8”); versucht das problem zu beheben… nachdem ich htmlentities() entfernt habe, wieder ein doppelter eintrag in die tabelle…

htmlentities und der header ham doch eher weniger miteinander zu tun.
wäre es möglich, das du im template irgendwo eine grafik, stylesheet oder javascript eingebunden hast, welches nicht korrekt verlinkt wurde, also statt “blabla.js” ist das vll leer, oder auf “/” verwiesen, was dazu führt, dass der FF die index seite oder so nochmal lädt?

Hm, nein, das ist nicht der fall, ich habe alle javascript funktionen aus dem template entfernt und der selbe fehler erscheint immer noch…

nicht nur javascript, auch alle grafiken oder externen stylesheets, oder besser noch: grafiken in stylesheets “background-image:url(’’);” oder so…
halt alles was der Browser automatisch lädt, und vll nicht korrekt angegeben wurde.

:hail: Danke, das war wohl der entscheidende Tipp! ich hab den codeblock soweit gekürzt das alle imgs und so rausfallen, ergebnis nur noch ein eintrag in die tabelle! Danke für den Hinweis o.O wär daran noch verrückt geworden^^
Ich überarbeite jetzt mal meinen Code und mach da die letzten Fehler raus…
Da sieht man mal wieder sauberes arbeiten lohnt sich o.O

Da hätte ich auch drauf kommen können. Bei einem Projekt, in das ich meine Klasse gar nicht eingebunden hatte, hatte ich trotzdem Logs, mit der aufgerufenen Seite als Referer, und der 404 als Datei. Der Fehler lag an einem fehlerhaften Pfad der CSS-Grafiken :wink: