Announcement

Collapse
No announcement yet.

Möglicher Konkatenierungs-Bug in PHP???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Möglicher Konkatenierungs-Bug in PHP???

    Es gibt solche Momente im Leben eines Entwicklers, die kurzzeitig verwirren, bis man dann nach genauerem Hinschauen den AHA-Effekt hat und man seine eigene Doofheit erkennt. Und dann gibt es leider auch die Momente, in denen man einen Fehler hat, der einfach komplett unerklärbar ist und nach Betriebssystem- oder Programmiersprachen Bug aussieht und der einen an den Rande der Verzweiflung treibt, bis man irgendeinen funktionierenden Work-Around gefunden hat, aber selbst dann hinterlassen solche Bugs das ungute Gefühl des Kontroll-Verlusts. So einen hatte ich gerade wieder. Mein PHP-Code setzt während der Laufzeit einen Pfad für Icons zusammen:

    PHP Code:
    $genhts_val_new $sys_url_icons.'/'.$genhts_val_new.'.'.$genhts_datei_suffix

    $genhts_val_new wird vorher schon mit dem Dateinamen des Icons gefüllt, z.B. "iconname123"
    $sys_url_icons ist eine globale Variable die den Basis-Pfad für Icons enthält, z.B. "https://www.blabla_projekt/runtime/ico
    $genhts_datei_suffix: Naja, spricht für sich, z.B. "gif"

    Das Ergebnis hätte also sein müssen: https://www.blabla_projekt/runtime/ico/iconname123.gif

    Der Code funktionierte offline. Nachdem ich ihn zum Hoster hochgeladen habe fehlten die Icons. Im generierten Source-Code befand sich folgender Pfad: https://www.blabla_projekt/runtime/mod/runtime/ico/iconname123.gif. Ich habe fett markiert was zusätzlich drin war und was nicht hätte drin sein dürfen.

    Ok, bis hierher könnte man sagen: Doofer Programmierer, irgendwo halt ein Bug in der Logik, Guck richtig hin und nerv hier nicht rum. Jetzt wird es allerdings extrem kurios:

    Ich habe hinter dem PHP-Code zum Zusammenbau ein echo $genhts_val_new reingepackt. Ich speichere, lade das hoch, mache ein Page-reload und die Icons sind da!!! Der Pfad wird plötzlich richtig generiert! Vorher habe ich die Seite über Stunden übrigens mehrfach aufgerufen und es hat nie funktioniert.

    Es wird noch kurioser. Ich lösche das ECHO wieder raus, es funktioniert weiterhin, allerdings sind noch ein paar Spaces drin, die ich nach dem Einfügen nicht mehr mit rausgelöscht hatte.
    Ich lösche die Spaces weg, der Code ist also wieder so wie vorher. ES FUNKTIONIERT NICHT MEHR, die Icons sind weg, der Pfad im generierten Code wieder falsch.
    Ich füge nun ein einzelnes Space hinter das Konkatenieren von $genhts_val_new ein - es funktioniert wieder, die Icons sind wieder da.

    Jetzt wirds noch kurioser:

    Ich lösche das einzelne Space wieder weg: Die Icons sind weiterhin da!
    Ich lade den alten Code von heute Vormittag - eine komplett unberührte Datei - erneut auf den Web-Server: Es funktioniert weiterhin, die Icons sind da.
    Der Fehler ließ sich seit dem nicht mehr reproduzieren!!! :-O

    Meine Frage: Könnte dieses Konkatenieren vielleicht buggy sein? Immerhin habe ich die Empfänger-Variable auch als Quell-Variable drin, bekommt er das vielleicht unter irgendwelchen Umständen nicht sauber hin?

    Oder habt ihr irgendeine andere Idee wodurch das verursacht sein kann?

  • #2
    Selbstverständlich funktioniert der Link nicht
    Selbstverständlich hat PHP ein Problem
    Selbstverständlich gibt es keinen Code...
    Welche Icons fehlten in dem Code??
    All deine bisherigen Probleme waren Fehler in PHP
    Zuletzt editiert von Christian Marquardt; 21.07.2021, 18:43.
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Selbstverständlich funktioniert der Link nicht
      Wie ich bereits sagte, er funktioniert. Das das oben nur ein Beispiel war, erschießt sich sicher sogar dir.

      Originally posted by Christian Marquardt View Post
      Selbstverständlich funktioniert der Link nicht
      Selbstverständlich hat PHP ein Problem
      Selbstverständlich gibt es keinen Code...
      Sicher weißt Du selbst, was Du damit sagen willst, ich jedenfalls nicht.

      Originally posted by Christian Marquardt View Post
      Welche Icons fehlten in dem Code??
      Alle Icons, weil der Icon-Pfad ja falsch ist, könnte man aber durch Lesen herausfinden.

      Originally posted by Christian Marquardt View Post
      All deine bisherigen Probleme waren Fehler in PHP
      Könnte daran liegen, dass ich PHP-Entwickler bin. Ist aber nur so eine Vermutung...

      Vielleicht war mein Post ja zu lang, daher das Problem noch mal zusammengefasst: Ich habe PHP-Code der falschen HTML-Code generiert. Ich füge zu Debugging-Zwecken ein ECHO ein und der Code funktioniert plötzlich. Ich nehme das ECHO wieder raus und er funktioniert immer noch.

      Comment


      • #4
        Wo wird "falschen HTML-Code generiert"
        Die einzige gezeigt Codezeile erzeugt kein HTML; da ist kein ECHO drin und wo sollte es auch hinkommen

        Da du hier keinen Code zeigst...wer soll was dazu sagen
        Insofern sollte sich dir
        "Sicher weißt Du selbst, was Du damit sagen willst, ich jedenfalls nicht."
        das erschließen

        Selbstverständlich hat noch niemand der millionenfachen Entwickler den Fehler bemerkt

        "Könnte daran liegen, dass ich PHP-Entwickler bin. Ist aber nur so eine Vermutung..."
        Wenn du an deinem Textverständnis arbeitest, müsstet du nicht vermuten.
        All deine bisherigen Probleme waren Fehler in PHP -> du hast alle DEINE Fehler auf PHP geschoben
        Zuletzt editiert von Christian Marquardt; 25.07.2021, 11:35.
        Christian

        Comment


        • #5
          Originally posted by Christian Marquardt View Post
          Wo wird "falschen HTML-Code generiert"
          Die einzige gezeigt Codezeile erzeugt kein HTML; da ist kein ECHO drin und wo sollte es auch hinkommen

          Da du hier keinen Code zeigst...wer soll was dazu sagen
          Insofern sollte sich dir
          "Sicher weißt Du selbst, was Du damit sagen willst, ich jedenfalls nicht."
          das erschließen

          Selbstverständlich hat noch niemand der millionenfachen Entwickler den Fehler bemerkt
          Da oben steht sehr wohl Code, darüber hinaus stehen dazu auch die Variablen-Inhalte zur Laufzeit und das darauf basierende erwartete Ergebnis im Zielfeld, als auch das tatsächliche Ergebnis des Zielfeldes. Außerdem ist das Problem umfassend erklärt, wenn man helfen wollte ergeben sich da sicher Ansätze. Aber was rede ich, Du willst ja eh nur meckern und nicht helfen, es scheint halt Dein Lebensinhalt zu sein. Dabei will ich Dich jetzt auch nicht weiter stören, denn da Du in diesem Forum scheinbar alle vernünftigen Leute schon rausgeekelt hast, ist es auch ziemlich sinnlos geworden hier noch was zu posten. Ich werde mich dann mal abmelden und hier sicher auch nicht mehr auftauchen.

          Comment


          • #6
            Wo steht da oben HTML CODE?
            "falschen HTML-Code generiert"???

            Wo wird ein Echo eingefügt???

            "Außerdem ist das Problem umfassend erklärt,"
            Sicher nicht
            "wenn man helfen wollte ergeben sich da sicher Ansätze."
            Wenn man den Code hat. Oben steht als einziger Code die Zuweisung zu einer Variablen. Das soll ein Ansatz sein?
            Wie werden die Variablen belegt? Wo ist das ECHO? Wo ist das fehlerhafte HTML?


            Tja, dann wie immer (war schon beim Thema GOTO so) persönliche Beleidigung.Wir wollen nicht deine enormen Beiträge zur Hilfe anderer vergessen
            "Ich mache keine Fehler, PHP hat Fehler" jooo so wird es sein. COUNT arbeitet auch falsch
            Selbstverständlich fügt PHP bei jeder Stringverarbeitung runtime/mod hinzu
            Zuletzt editiert von Christian Marquardt; 01.08.2021, 19:05.
            Christian

            Comment

            Working...
            X