HTML Headers... oder ich dreh gleich durch...!

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

  • HTML Headers... oder ich dreh gleich durch...!

    Servus Community!

    Ihr seid meine letzte Hoffnung. Stundenlang durchsuche ich bereits das Forum nach einer endlich erlösenden Antwort, aber ohne Erfolg...

    Szenario: Durch eine DB Abfrage wird dynamisch ein PDF Dokument erzeugt, welches in einem Verzeichnis mit chmode 777 gespeichert wird. Das geht alles ziemlich gut! - Nur, jetzt wollte ich gerne dem Benutzer ersparen auf einen weiteren Link zu klicken, damit er die Rechnung einsehen kann, sondern gleich ein Downloadpopup erscheinen lassen, wie es allseits bekannt ist.

    Nun, habe ich entsprechend die header infos für den Browser angepasst und da es sich bei dem PDF erstellenden Skript um ein include handelt, habe ich diese Info auf die geladene Seite an die allererste Stelle in eine kleine Funktion geschrieben:

    function DPDF($DATEI){
    $fileName="facturas/".$DATEI; // Dateiname funzt - das habe ich schon per echo getestet!!!
    header("Content-Disposition: attachment; filename=$fileName");
    header("Content-Type: application/octet-stream");
    header("Content-Length: ".filesize("$fileName"));
    header("Pragma: no-chache");
    header("Expires: 0");
    $fp=fopen("$fileName","r");
    print fread($fp, filesize("$fileName"));
    fclose($fp);
    exit();
    }
    Nur bekomme ich immer wieder die gleiche Fehlermeldung:
    Cannot add header information - headers already sent by... und danach die Ausgabe des PDF Dokumentes kryptisch (Buchstabensalat...)

    Nur in der gemeldeten Fehlerzeile werden keine header gesendet ..???!

    Wer hat den entscheidenen Tipp für mich, denn ich bin völlig ratlos ?

    Danke für Alles
    Christian

  • #2
    nö, *PHP Tags überreicht* - mach die php tags mal rein.
    btw: reinzufällig wird über dem code nicht <html> etc geschrieben oder?
    [COLOR=darkblue]Manuals:[/COLOR] [COLOR=green]HTML[/COLOR]/[COLOR=indigo]CSS[/COLOR]/[COLOR=orangered]PHP[/COLOR]/[COLOR=blue]MySQL[/COLOR]/[COLOR=red]Apache 2[/COLOR]
    [COLOR=orangered]Archive: JavaScript/Flash/PHP/OpenSource-Lösungen[/COLOR]
    [COLOR=seagreen]Tutorials: Flash/Photoshop[/COLOR]
    [COLOR=red]Problem? Lösung 1 - Lösung 2[/COLOR]

    Kommentar


    • #3
      Re: HTML Headers... oder ich dreh gleich durch...!

      habe ich diese Info auf die geladene Seite an die allererste Stelle in eine kleine Funktion geschrieben:
      wenns eine funktion ist, ists relativ brust, wo du die hinpackst ... es geht ja um den aufruf
      Nur bekomme ich immer wieder die gleiche Fehlermeldung:
      Cannot add header information - headers already sent by...


      Nur in der gemeldeten Fehlerzeile werden keine header gesendet ..???!
      in der fehlermeldung stehen normalerweise zwei zeilennummern, die, wo der fehler auftrat, und die, wo die ausgabe began.
      EDIT:
      such mal nach *fussel - löl, funktioniert sogar
      Zuletzt geändert von derHund; 29.06.2004, 12:54.
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        Hallo Christian,

        dieser Header-Fehler tritt auf, wenn vor dem Header bereits Zeichen an den Browser gesendet wurden (was die Fehlermeldung ja auch besagt). Hierbei kann es sich auch um ein Enter oder Leerzeichen handel ...

        HTH!

        Kommentar


        • #5
          wo wir gerade bei leerzeichen in header bereichen sind: http://www.heise.de/security/news/meldung/48682
          [COLOR=darkblue]Manuals:[/COLOR] [COLOR=green]HTML[/COLOR]/[COLOR=indigo]CSS[/COLOR]/[COLOR=orangered]PHP[/COLOR]/[COLOR=blue]MySQL[/COLOR]/[COLOR=red]Apache 2[/COLOR]
          [COLOR=orangered]Archive: JavaScript/Flash/PHP/OpenSource-Lösungen[/COLOR]
          [COLOR=seagreen]Tutorials: Flash/Photoshop[/COLOR]
          [COLOR=red]Problem? Lösung 1 - Lösung 2[/COLOR]

          Kommentar


          • #6
            Hm, also die Funktion rufe ich erst in dem include auf, was mir jetzt durchaus problematisch erscheint.

            Dumme Frage: Kann man header Information löschen oder auslesen, wo sie geschrieben wurde, um somit dem Öbeltäter auf die Spur zu kommen?!

            Kommentar


            • #7
              Ja ... und das steht sogar in Deiner Meldung " headers already sent by" ...
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                Ein ganz einfacher Fix (ich würde allerdings zunächst mal nach der fehlerhaften Ausgabe suchen) wäre im übrigen:
                • Der Aufruf der Funktion ob_start() in der 1. Zeile Deines Scripts ...
                • sowie ein Aufruf der Funktion ob_end_clean() vor der endgültigen Ausgabe des PDF-Dokuments.
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Original geschrieben von goth
                  Ja ... und das steht sogar in Deiner Meldung " headers already sent by" ...
                  ... joh, nur in dieser Zeile steht primitiver HTML Quelltext, welcher von einem echo Befehl ausgeben wird:

                  .....
                  <td width="690" valign="top">';

                  _______________

                  Ende of story...? Verstehe nicht, wie das einen header senden könnte..?!

                  Kommentar


                  • #10
                    Original geschrieben von Zefixhall
                    ... joh, nur in dieser Zeile steht primitiver HTML Quelltext, welcher von einem echo Befehl ausgeben wird:

                    .....
                    <td width="690" valign="top">';

                    _______________

                    Ende of story...? Verstehe nicht, wie das einen header senden könnte..?!
                    Das ist genau der Punkt ... durch jede Art von Ausgabe wird automatisch der Header gesendet ...
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      Original geschrieben von Zefixhall
                      ... joh, nur in dieser Zeile steht primitiver HTML Quelltext, welcher von einem echo Befehl ausgeben wird [...] Verstehe nicht, wie das einen header senden könnte..?!
                      bevor irgendwelcher quellcode an den browser ausgegebn wird, müssen natürlich vom server die header gesendet werden - der client muss ja mitgeteilt bekommen, dass jetzt eine html-seite folgt.

                      wenn du keinen header selber auslöst, macht php das automatisch, sobald die erste ausgabe erfolgt.

                      und genau deshalb steht überall zu lesen, dass vor der verwendung des header-befehls eben keinerlei ausgaben erfolgt sein dürfen.

                      was du daran nicht verstehst, ist mir aber ein rätsel ...
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Ja, das wars! - Danke für Deine Hilfe. Nur jetzt will er mir immer noch kein PopUp Fenster zum Download anbieten...

                        Diese Welt ist nicht gerecht ;-)

                        Wenn Euch noch was diesbezüglich einfällt, dann bin ich dafür sehr dankbar!

                        Gruss aus Spanien.
                        Christian

                        Kommentar


                        • #13
                          Wenn Euch noch was diesbezüglich einfällt, dann bin ich dafür sehr dankbar!
                          http://www.lugbz.org/documents/smart-questions_de.html
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar


                          • #14
                            Es tut mir leid, Deine Zeit für meine Unzulänglichkeit in Anspruch genommen zu haben. Für die Elite der Hacker, die eine "gute Frage" wünschen formuliere ich mich noch einmal gerne neu:

                            Warum bietet mir der Browser kein Downloadfenster an, obwohl ich einen korrekten header mit folgender Information an den Browser sende:

                            header("Content-Disposition: attachment; filename=$fileName");
                            header("Content-Type: application/octet-stream");
                            header("Content-Length: ".filesize("$fileName"));
                            header("Pragma: no-chache");
                            header("Expires: 0");

                            Christian
                            P.S.: Seit einem Jahr arbeite ich mit PHP und es ist erst das 2. Mal, das ich hier um Rat bitte - also bezichtige mich nicht der Faulheit oder ich hätte meine Hausaufgaben nicht gemacht...

                            Kommentar


                            • #15
                              Was soll das Hund?
                              Er hat seine Frage doch klar und verständlich gestellt, zumindest habe ich (und ich denke alle anderen auch) sie verstanden.
                              Vielleicht solltest du dir mal den Artikel "Wie man Fragen richtig versteht! " zu Gemüte führen. Tz sowas!
                              54 68 65 72 65 20 61 72 65 20 6F 6E 6C 79 20 31 30 20 74 79 70 65 73 20 6F 66 20 70 65 6F 70 6C 65 20 69 6E 20 74 68 65 20 77 6F 72 6C 64 3A A 54 68 6F 73 65 20 77 68 6F 20 75 6E 64 65 72 73 74 61 6E 64 20 62 69 6E 61 72 79 2C 20 61 6E 64 20 74 68 6F 73 65 20 77 68 6F 20 64 6F 6E 27 74

                              Kommentar

                              Lädt...
                              X