cannot modify header .. (ich trau mich gar nicht ;)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • cannot modify header .. (ich trau mich gar nicht ;)

    Hallo Community,

    ich habe hier ein Problem mit dieser oft gefragten »Cannot modify header information - headers already sent« Geschichte. Ich habe mir natürlich den Sticky Thread durchgelesen, verstehe aber das Prinzip irgendwie gar nicht_– also bitte nicht gleich wieder drauf einschlagen.

    Was ich konkret mache, ist via folgendem Code

    PHP-Code:
    <? 
    header("Content-type: image/gif");
    $im = imagecreatetruecolor(500, 400);
    $white = imagecolorallocate($im, 255, 255, 255);
    $black = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 499, 399, $black);
    $text = "testtext";
    $font = 'fontface.ttf';
    imagettftext($im, 20, 0, 10, 20, $white, $font, $text);
    imagegif($im);
    imagedestroy($im);
    ?>
    einen Text als GIF ausgeben. Nun steht ja dieses Sniplet nicht im luftleeren Raum. Der Code an sicht funktioniert so lange, bis er z.B. via include in das eigentliche Layout eingebettet wird. Nun ist die Frage was ich ändern muss, damit ich nicht diese Cannot modify Fehlermeldung bekomme. Ich kann das Skript ja nicht einfach an den Anfang der Seite stellen..

    danke sehr!

    tm

  • #2
    Ich kann das Skript ja nicht einfach an den Anfang der Seite stellen
    wenn du mit header arbeitest, dann mußt du das. oder willst du das bild in die seite einbinden? dann ist die lösung ziemlich sinnfrei.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Re: cannot modify header .. (ich trau mich gar nicht

      Original geschrieben von Typomaniac
      Der Code an sicht funktioniert so lange, bis er z.B. via include in das eigentliche Layout eingebettet wird.
      Du willst doch nicht behaupten, dass du das ins normale HTML irgendwo reinbaust?
      Das machst du doch mit normalen Grafiken auch nicht - oder schreibst du da wirklich die binären Bilddaten irgendwo ins HTML ...?

      Nun steht ja dieses Sniplet nicht im luftleeren Raum.
      Nein, luftleer ist der Raum idR. nicht.

      Aber ein Bild ist in den allermeisten Fällen eine eigenständige Ressource - also behandle es bitte auch als solche.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hallo Kropff und wahsaga,

        danke erstmal für die Antworten. Das ganze landet dann in einer PHP Seite die aber natürlich auch HTML Code enthält. Was genau Du, wahsaga, damit meinst dass ein Bild eine eigenständige Ressource sei verstehe ich nicht. Auch dass meine Lösung sinnfrei wäre (wegen der Header Geschichte) verstehe ich eben nicht. Ich habe mir dieses Sniplet nicht selbst erdacht, verstehe es aber zumindest rudimentär. Wie ich allerdings das ganze anlegen müsste, damit ich das Bild INNERHALB einer Seite generieren kann verstehe ich überhaupt nicht. Könnt ihr mir hier weiterhelfen?

        Danke,

        tm

        Kommentar


        • #5
          Original geschrieben von Typomaniac
          Was genau Du, wahsaga, damit meinst dass ein Bild eine eigenständige Ressource sei verstehe ich nicht. Auch dass meine Lösung sinnfrei wäre (wegen der Header Geschichte) verstehe ich eben nicht.
          Dann beantworte bitte die Frage, die ich dir stellte:
          Das machst du doch mit normalen Grafiken auch nicht - oder schreibst du da wirklich die binären Bilddaten irgendwo ins HTML ...?
          Wie ich allerdings das ganze anlegen müsste, damit ich das Bild INNERHALB einer Seite generieren kann verstehe ich überhaupt nicht.
          Wieso - hast du denn noch nie mit HTML gearbeitet, und dort ein Bild eingebunden?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Das machst du doch mit normalen Grafiken auch nicht - oder schreibst du da wirklich die binären Bilddaten irgendwo ins HTML ...?
            eh. nein? ich hielt das für einen Scherz. ich binde die via img src ein. Natürlich. Willst du darauf hinaus, dass ich das Bild Generieren muss und dann anschliessend via img src einbinden?

            das heisst vermutlich dass diese Destroy Geschichte am schluss Quatsch ist und ich stattdessen das ganze abspeichern muss. Ist das richtig? Wenn das so stimmt: würdest du mir auch verraten wie das geht? Oder hab ich dich komplett falsch verstanden?

            danke,

            tm

            Kommentar


            • #7
              Original geschrieben von Typomaniac
              eh. nein? ich hielt das für einen Scherz.
              Komisch ... das hab ich mir bei deiner Frage auch gedacht.
              ich binde die via img src ein. Natürlich.
              Natürlich.
              Willst du darauf hinaus, dass ich das Bild Generieren muss und dann anschliessend via img src einbinden?
              Ja.
              das heisst vermutlich dass diese Destroy Geschichte am schluss Quatsch ist und ich stattdessen das ganze abspeichern muss. Ist das richtig?
              Nein, das ist nicht erforderlich.
              Es interessiert meinen Browser und jeden anderen Client überhaupt nicht, ob irgend etwas als physische Datei auf dem Server vorhanden ist - Hauptsache, er bekommt seine Daten geschickt.
              Ob die aus einer Datei kommen, von einem Script generiert werden, oder von deiner Oma am Server "live" über die Tastatur eingehackt werden, ist sowas von Schnuppe ...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Hallo wahsaga,

                ich bin ja echt dankbar über jede konstruktive Antwort, fände es aber ganz erbaulich wenn man nicht jedesmal wenn man irgendetwas nachfragt erstmal eine Runde plattgemacht wird. Wenn ich wüsste wie es geht, würde ich auch nicht nachfragen.

                Deine Schlussbemerkung hat mich zwar vom Verständnis ein Stück weitergebracht (danke) – dennoch habe ich keine Lösung. Ich würd jetzt vom verständnis her das Skript an den Anfang der Datei setzen und dann an der Stelle wo die grafik erscheinen soll:

                PHP-Code:
                imagegif($im); 
                stimmt das?

                danke sehr,

                tm

                Kommentar


                • #9
                  zitat manual:
                  int imagegif ( int im [, string filename] )

                  ImageGIF() erzeugt eine Datei im Format GIF aus im. Falls Sie [COLOR=red][filename][/COLOR] angegeben haben, wird die Ausgabe in diese Datei geschrieben, ansonsten wird die Ausgabe direkt an den Browser geleitet.

                  [COLOR=red]ACHTUNG:[/COLOR] Ab Version 1.6 wurde die GIF-Unterstützung komplett aus der GD-Bibliothek entfernt. Diese Funktion ist also nur verfügbar, wenn Sie eine Version vor 1.6 verwenden.
                  peter
                  Zuletzt geändert von Kropff; 11.12.2006, 15:58.
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Original geschrieben von Typomaniac
                    ich bin ja echt dankbar über jede konstruktive Antwort, fände es aber ganz erbaulich wenn man nicht jedesmal wenn man irgendetwas nachfragt erstmal eine Runde plattgemacht wird. Wenn ich wüsste wie es geht, würde ich auch nicht nachfragen.
                    Wenn man sich mal ein bisschen mit den in dem Zusammenhang relevanten Techniken (HTML, HTTP) beschäftigt hätte, sollte sich die Frage eigentlich gar nicht stellen (dürfen).
                    Ich würd jetzt vom verständnis her das Skript an den Anfang der Datei setzen und dann an der Stelle wo die grafik erscheinen soll:
                    PHP-Code:
                    imagegif($im); 
                    stimmt das?
                    Was erhalten wir dann? Wiederum die binären Bilddaten innerhalb der gleichen Ressource, in der auch das HTML steht.
                    Wollen wir das? Nein, weil wegen Unfug ...
                    HTML-Dokument = eine Ressource, Bild = eine Ressource. Zwischen beiden nix Zusammenhang, Hmkay?

                    Wie binden wir Bilder in HTML ein? Über <img src="...">
                    Was ist das "..."? Die Adresse einer HTTP-Ressource.
                    Was ist eine HTTP-Ressource? Ein HTTP-URL, nach dem wir den Client beim Server nachfragen lassen (Request), woraufhin uns der Server bestimmte Daten zurückliefert (Response).
                    Interessiert es uns, ob der Server diese Daten aus einer Datei holt, oder ob diese dynamisch von einem Script erzeugt und ausgegeben werden? Nein, nicht die Bohne. (Und das mit der Oma wäre uns, wenn's denn so wäre, auch egal ...)


                    Also, was geben wir jetzt bei <img src="..."> an?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      keine Ahnung. Aber hab schon verstanden. Ich kann leider nicht auf das Spektrum
                      an Sachkunde zurückgreifen welches Du zu besitzen scheinst – und ich habe auch wie schon erwähnt echt keine Lust dass Du Dich auf meine Kosten (seht nur, ein Depp!) an Deinem Wissen erfreust. Danke natürlich trotzdem für Deine Mühe!

                      Ich versuchs mit dem Hinweis von Kropff und speichere das Ding erstmal. Auch vielen Dank!

                      tm

                      Kommentar


                      • #12
                        PHP-Code:
                        imagegif($im'blubb.gif');
                        echo 
                        '<img src="blubb.gif">'
                        peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          Ich versuche die Fragen hier aufzuschreiben, die jemand sich selber im voraus offenbar zu stellen vergessen hat - in der Hoffnung, dass er dabei was lernt, und sich beim nächsten ähnlichen Problem vielleicht schon selber die richtigen Fragen stellt ...
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            den umweg über die datei finde ich nicht so toll.

                            Typomaniac, du lagerst den teil, der das bild erstellt einfach in eine php-datei aus und diese bindest du dann ganz normal per <img src in dein html-dokument ein.

                            Kommentar


                            • #15
                              ich glaub jetzt habe ich verstanden wie es Funktioniert :-). ich teste das gleich heute Abend aus. Vielen vielen Dank für die Hilfe!

                              tm

                              Kommentar

                              Lädt...
                              X