Firefox 4 & Xampp/PHP - Scripts laufen nicht mehr

  • Hallo, ich bin neu und ratlos :lol: Absolut unverstandenes Phänomen:

    Ich schließe einen Arbeitsschritt in einem PHP-Script ab mit einer IF-Abfrage, die eine Steuerungsvariable für die weitere
    Verarbeitung setzt.
    IF Bedingung1, dann setze Variable x = 2,
    ELSEIF Bedingung2, dann setze Variable x =3

    Beide Verzweigungen sind formal absolut identisch aufgebaut, das Konstrukt hat unter FF 3 einwandfrei gearbeitet.

    Unter FF4 passiert folgendes:
    Mit einer Art Trap INNERHALB der jeweiligen Verzweigung kann ich verifizieren, daß unter Bedingung1 die IF-Verzweigung angelaufen wird und die Variable korrekt auf 2 gesetzt wird.
    Ebenso kann ich verifizieren, daß unter Bedingung2 die ELSEIF-Verzweigung angelaufen wird und die Variable korrekt auf 3 gesetzt wird.

    Wenn ich aber die Variable x unmittelbar HINTER den beiden Verzweigungen abfrage, dann ist die Variable stets nur dann gesetzt, wenn zuvor der ELSEIF-Zweig durchlaufen wurde (also x = 3).
    Wurde der IF-Zweig durchlaufen, dann ist x leer (oder nicht vorhanden).

    Ich bin zurück auf FF3, nun läuft alles wieder bestens.
    Das ist aber ein Verhalten, das ich absolut nicht nachvollziehen kann !!!
    Hat jemand eine Idee ??

    Danke und Gruß, zadok

  • Hallo zadok,

    Willkommen im Forum

    Augenscheinlich sind dir die Abläufe nicht geläufig. PHP läuft unter der Regie des Servers, das dann ausgelieferte Ergebnis läuft unter der Regie des Fx.

    Entwanze dein PHP-Skript.

  • Yuup, jetzt wo Du's sagts :oops: Danke für den Hinweis.

    Aber umso weniger verstehe ich, wieso sich die Ausführung durch den unveränderten Server unter FF3
    anders verhält, als unter FF4 ??
    Der Zusammenhang mit der FF-Version ist jedenfalls eindeutig reproduzierbar !

    Gruß, zadok

  • Da mit der Anfrage beim Server auch eine höfliche Vorstellung des Browsers erfolgt, aka. UA-String im Header, ist dies vorstellbar. Achte mal eine mögliche, falsche Auswertung des UA.

  • So what i have done:

    DB-Zugriff mit FF3 = alles Bestens
    Update auf FF4, DB-Zugriff funktioniert nicht
    Mit general.useragent.override den UA-String des FF3 gesetzt: Keine Änderung, DB-Zugriff funktioniert nicht.
    FallBack auf FF3 = alles Bestens

    :-???:-???:-???

  • Also im Grunde muss der Server (entweder der Apache selbst oder halt das PHP-Script, dass die Anfrage vom Apachen weitergereicht bekommt) sich an der Anfrage vom Firefox stören. Da scheint irgendwas in den Header-Informationen zu stehen, das Probleme bereitet.

    Ein Browser hat überhaupt keinen Datenbankzugriff, da diese für externe Anfragen ohnehin off limit ist. Die Anfrage an die Datenbank wird ja durch das PHP-Script gestellt. Insofern kann es auch kein Browser vermasseln. Egal welcher Bauart. Die haben schlicht keinen Zugriff.

    Irgendeine Prüfung der gesendeten Anfrage ist seitens deines PHP-Script wohl so, dass es ein "true" (evtl. stillschweigend) erwartet, aber ein "false" bekommt und dann keinen passenden Case findet in der es weiter ablaufen kann.

    Da wir deine Umgebung und dein Script nicht kennen, kann man hier nur viel "evtl." sagen. Kann natürlich auch alles ganz andere Ursachen haben, da wir nur auf dein Feedback reagieren können. Wir können es ja nicht nachstellen um es zu prüfen.

    Was mir noch einfällt: mit Firefox 4 gibt es jetzt eine DoNoTrack-Funktion (findet sich unter Einstellungen->Erweitert->Browsing->Webseite mitteilen...). Diese erweitert den Header um eine Information. Dies hat bei manchen Routern zu Zugriffsproblemen geführt, weil die mit der zusätzlichen Information nicht klar kamen. Wenn du diese Option aktiviert hast, deaktiviere sie doch mal testweise.

    Wir hatten vor kurzem auch eine weitere Anfrage in Verbindung mit XAMPP:
    https://www.camp-firefox.de/forum/viewtopic.php?t=90297
    Allerdings kann ich nur sagen, ich hab ein XAMPP als Entwicklungsumgebung laufen und hab keinerlei Probleme. Kann also kein generelles Problem sein.

    Hast du den 4er mal mit sauberem/neuem Profil getestet? Eine Portable bietet sich dafür an (vorzugsweise die von Caschy: http://stadt-bremerhaven.de/downloadbereich/ ).

  • Die Vermutung des UA konnte somit also weder bestätigt noch verworfen werden.

    Wenn die je nach Fx ausgelieferten Resultate identisch sind, kein optischer sondern maschineller Vergleich, kann man vorläufig von veralteten Konstrukten des Servers ausgehen.

  • Die Geschichte mit der DoNoTrack Funktion habe ich gerade ausprobiert: war nicht gesetzt und daran liegts auch nicht.
    Danke aber für den Hinweis.

    Wenn ich etwas Zeit finde werde ich einfach mal versuchen, ein PHP Kurzscript zu erstellen und zu posten,
    welches das Problem reproduziert. Das kann ja nicht so aufwändig sein.

    Gruß,zadok

  • Zitat von .Ulli

    Die Vermutung des UA konnte somit also weder bestätigt noch verworfen werden.

    Wenn die je nach Fx ausgelieferten Resultate identisch sind, kein optischer sondern maschineller Vergleich, kann man vorläufig von veralteten Konstrukten des Servers ausgehen.

    Wenn Du damit das Ergebnis in der Datenbank meinst, dann: Nein - die Ergebnisse sind nicht identisch.

    Unter FF3 wird kein Fehler angezeigt und der entsprechende DB-Update wird durchgeführt.
    Unter FF4 führt dasselbe PHP-Script zu einer Fehleranzeige im Browser und der DB-Update wird nicht durchgeführt.
    (Wie denn auch: die benötigte Steuerungs-Variable ist ja leer. Entsprechend ist auch die genannte Fehleranzeige keine FF-generierte, sondern eine im Script für einen undefinierten Fehlerfall vorgesehene).

    zadok

  • Ich glaube, ich habe die Stelle identifiziert, an der der Fx Einfluß auf mein PHP-Script nimmt !
    (Eine jener Kleinigkeiten, die man vergißt zu erwähnen, weil sie eh' nicht wichtig sind - Mist, dabei bin ich selber im Support tätig :oops: )

    NACH dem Durchlaufen der IF/ELSEIF-Verzweigung mach' ich doch noch was: ich gebe über den Fx Buttons aus, mit
    denen ich meine DB-Operation verwerfen, korrigieren oder eben bestätigen kann.
    Nur bei einem Commit wird in die Prozedur zum Schreiben in die DB gegangen und nur in diesem Fall wird die o.g. Steuerungsvariable relevant.

    Das bedeutet, daß Fx4 bei der Rückgabe meines Buttonwertes irgendwie anders reagiert als der Fx3 !? !

    Zusätzlich rätselhaft bleibt dabei, wieso die Fehlrückgabe nur nach Durchlauf des IF- , nicht aber nach Durchlauf des ELSEIF- Zweiges auftritt .

    zadok

  • Ich weiß, es klingt vielleicht anmaßend, aber hast du deinen Quelltext mal von einem Validator prüfen lassen? Weil der 4er betreibt eine andere Fehlerkorrektur wie der alte 3.6er, da ein neuer Parser zum Einsatz kommt. Schon mal mit Firebug geschaut, ob der gerenderte Quelltext der selbe ist wie der, den du geschrieben hast?

  • Das ist keineswegs anmaßend - danke für den Hinweis. Kannte Firebug nicht, werde es aber morgen sofort ausprobieren.

    der 4er betreibt eine andere Fehlerkorrektur wie der alte 3.6er, da ein neuer Parser zum Einsatz kommt
    Das könnte ja wirklich die Ursache für das veränderte Verhalten sein !

    Gruß, zadok