mustino: Problem mit header

Hallo,

ich versuche in PHP mit Hilfe eines header auf eine andere Seite zu verweisen. Das Skript ist in einer HTML-Datei eingebettet.

Der Verweis sieht folgendermaßen aus:

.
.
.
if($_POST[bestellung]){
 header('Location: testshop4.php?PHPSESSID=$sessnum');
 exit;
}
?>
</HEAD>

Lokal auf dem Rechner funktioniert es auch, nur nicht online.
Online bekomme ich folgende Fehlermeldung:

Warning: Cannot add header information - headers already sent by (output started at /mnt/ja1/03/288/00000006/htdocs/Server/test3.php:9) in /mnt/ja1/03/288/00000006/htdocs/Server/test3.php on line 91

Ich wäre Euch dankbar, wenn Ihr mir helfen könntet.

MfG

Mustino

  1. Hallo mustino,

    if($_POST[bestellung]){

    hast du eine Konstante 'bestellung' definiert oder meinst du $_POST['bestellung']? (siehe: Doku/Arrays)

    header('Location: testshop4.php?PHPSESSID=$sessnum');

    hinter 'Location:' muss eine vollständige URI stehen.

    Warning: Cannot add header information - headers already sent by (output started at /mnt/ja1/03/288/00000006/htdocs/Server/test3.php:9) in /mnt/ja1/03/288/00000006/htdocs/Server/test3.php on line 91

    PHP-FAQ, 28.13. Warning: Cannot add header information - headers already sent ...

    Grüße aus Nürnberg
    Tobias

    1. Hallo,

      Ihr seid mir zu schnell!

      Ich glaube, daß ich besser nur noch auf Postings antworte, wenn ich hier
      nachts unterwegs bin. Ansonsten ist das ja Zeitverschwendung ;-)

      Gruß, Jan

      1. Hello,

        Gruß, Jan

        Aber nicht aus M. oder?

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo,

          Aber nicht aus M. oder?

          M.?

          Nein, aus Kaiserslautern, bzw. einem kleinen Städtchen in der Nähe.

          Gruß, Jan

          1. Hello,

            Nein, aus Kaiserslautern, bzw. einem kleinen Städtchen in der Nähe.

            Hätte ja sein können. Wahrscheinlichkeit irgendwie 1:370.000

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hallo.

              Hätte ja sein können. Wahrscheinlichkeit irgendwie 1:370.000

              Eigentlich 1:29.
              MfG, at

              1. Hello,

                Hätte ja sein können. Wahrscheinlichkeit irgendwie 1:370.000

                Eigentlich 1:29.

                Wieso?
                Gibts nur 30 'Jan L.' im deutschsprachigen Raum?

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hallo.

                  Wieso?
                  Gibts nur 30 'Jan L.' im deutschsprachigen Raum?

                  Vermutlich nicht, aber mindestens einen in "A.", mindestens einen in "B.". etc.
                  MfG, at

          2. Hallo Jan,

            Nein, aus Kaiserslautern, bzw. einem kleinen Städtchen in der Nähe.

            hättest du das nicht 2,5 Monate früher sagen - da war ich mit dem Fahrrad in der Gegend (meine Oma wohnt auch in so einem Kaff) :-)

            Grüße aus Nürnberg
            Tobias

            1. Hallo,

              Nein, aus Kaiserslautern, bzw. einem kleinen Städtchen in der Nähe.
              hättest du das nicht 2,5 Monate früher sagen - da war ich mit dem Fahrrad in der Gegend (meine Oma wohnt auch in so einem Kaff) :-)

              Kann ich ja nicht ahnen. Wer kommt schon freiwillig nach KL, wenn nicht
              zum Fußball? ;-)

              Wenn du mal wieder in der Gegend bist, kannst du ja ne Mail schicken,
              dann lad ich dich zu einem schönen Schoppen Pfalzwein ein.

              Gruß, Jan

              --
              Pfalzwein - der macht betrunken /
              Pfalzwein - den trinken Halunken
              1. Hallo Jan,

                Kann ich ja nicht ahnen. Wer kommt schon freiwillig nach KL, wenn nicht
                zum Fußball? ;-)

                Ich, ganz besonders gern am 15. August zum Bummeln und Einkaufen, wenn dieser Tag nicht auf ein Wochenende fällt *g*

                Beruflich bin ich auch immer wieder gern in Kaiserslautern.

                Freundliche Grüsse,

                Vinzenz

                1. Hallo,

                  Ich, ganz besonders gern am 15. August zum Bummeln und Einkaufen, wenn dieser Tag nicht auf ein Wochenende fällt *g*

                  Lustig, die ganzen Leutchen aus KL fahren zum Bummeln und Einkaufen
                  immer nach Mannheim oder Saarbrücken.

                  Beruflich bin ich auch immer wieder gern in Kaiserslautern.

                  Ja, wenn man nicht gerade bei Opel oder Pfaff arbeitet, tut sich da ja
                  in letzter Zeit auch einiges.

                  So schlecht lebt es sich hier wirklich nicht. Wenn ich im Herbst mit
                  einem schönen Korb voller Steinpilze aus dem Pfälzerwald, der gleich
                  neben meiner Haustür anfängt, zurückkomme, bin ich mit meiner Wohnlage
                  immer besonders zufrieden.

                  Gruß, Jan

              2. Hallo Jan,

                Kann ich ja nicht ahnen. Wer kommt schon freiwillig nach KL, wenn nicht
                zum Fußball? ;-)

                am ersten Tag (7.8.) meiner Tour nach KL hat mich einer gefragt, ob zum Spiel Nbg-Kl nicht etwas spät dran wäre :-)

                Wenn du mal wieder in der Gegend bist,

                Das wird wohl erst wieder in der Adventszeit sein - beim nächsten Verwandschaftsbesuch :-)

                Grüße aus Nürnberg
                Tobias

    2. Vorerst danke für die schnelle Antwort.

      hast du eine Konstante 'bestellung' definiert oder meinst du $_POST['bestellung']?

      Es ist keine Konstante.

      header('Location: testshop4.php?PHPSESSID=$sessnum');
      hinter 'Location:' muss eine vollständige URI stehen.

      Ich habe die vollständige URL eingefügt fuktioniert aber trotzdem nicht online. Müsste ich URL nach ...testshop4.php aufhören?

      Gruß

      Mustino

      1. Vorerst danke für die schnelle Antwort.

        hast du eine Konstante 'bestellung' definiert oder meinst du $_POST['bestellung']?

        Es ist keine Konstante.

        Doch...

        header('Location: testshop4.php?PHPSESSID=$sessnum');
        hinter 'Location:' muss eine vollständige URI stehen.

        Ich habe die vollständige URL eingefügt fuktioniert aber trotzdem nicht online. Müsste ich URL nach ...testshop4.php aufhören?

        Muah hast Du gelesen was Dir geschrieben wurde?
        Übrigens Asche auf mein Haupt, dass ich einen solchen Fehler nicht erkannt habe.
        Übrigens mustino, ich hoffe Du programmierst diesen Shop nur mal so zum Spaß wenn Du mit dieser Programmierleistung Geld verdienen möchtest, na dann Gute Nacht.

        TomIRL

        1. Sorry,

          die Antwort von mir war zeitgleich mit Euren Antworten. Es funktioniert jetzt.

          Danke für Eure Mühe!

          Mustino

          P.S. Der Grund für den header und der Session-id am Ende ist, dass nach dem Ablauf des Skriptes durch einen Formular-Button auf eine andere Seite verwiesen werden sollte. Die neue Seite jedoch hat die Session-ID von der letzten Seite nicht übernommen. Obwohl start_session() gesetzt ist.

  2. if($_POST[bestellung])

    Das sollte $_POST['bestellung'] heissen, sonst wird erst nach der Konstanten bestellung gesucht.

    header('Location: testshop4.php?PHPSESSID=$sessnum')

    Hier solltest du einen kompletten URL angeben (mit http://), auch wenn's so trotzdem oft funktioniert...

    Warning: Cannot add header information - headers already sent by

    Die Header müssen immer als aller erstes an den Browser gesendet werden. Wenn vor deinem ersten PHP-Bereich auch nur eine Leerzeile steht, dann wird diese Leerzeile an den Browser geschickt (mit Headern vorweg) und Du kannst keine neuen Header mehr versenden.
    Sieh also zu, daß deine Header als allererstes versendet werden.
    header('Location: ... funktioniert nicht mehr, wenn es bereits vorher eine andere Ausgabe im Browser gab (oder wenn Du vorher bereits eine Session gestartet hast, dann wird nämlich versucht, ein Session-Cookie zu setzen).

    Gruß, rob

  3. Lokal auf dem Rechner funktioniert es auch, nur nicht online.
    Online bekomme ich folgende Fehlermeldung:

    Warning: Cannot add header information - headers already sent by (output started at /mnt/ja1/03/288/00000006/htdocs/Server/test3.php:9) in /mnt/ja1/03/288/00000006/htdocs/Server/test3.php on line 91

    zunächst:
    Du mußt die vollständige URL angeben alles andere kann funktionieren muß aber nicht.

    Ansonsten würde ich mal ein bischen probieren...
    Vielleicht liegts an des Session id..
    Macht für mich rgendwie auch keinen Sinn eine Sesion ID vorher festuzulegen? btw was machst Du da überhaupt.
    TomIRL

  4. Hallo,

    if($_POST[bestellung]){

    Da 'bestellung' kaum eine Konstante sein wird, sollte die Zeile wohl

    if ($_POST['bestellung']) {

    lauten.

    header('Location: testshop4.php?PHPSESSID=$sessnum');

    Bei einem Location-Header mußt du eine vollständige URL angeben.

    Lokal auf dem Rechner funktioniert es auch, nur nicht online.

    Hast du lokal vielleicht 'output-buffering' (oder so ähnlich)
    aktiviert?

    Online bekomme ich folgende Fehlermeldung:
    [...]

    Wenn du einen HTTP-Header an den Client schicken willst, darf vorher
    nichts anderes (außer anderen Headern) gesendet werden. Du scheinst
    aber vorher zu versuchen HTML zu senden.

    Gruß, Jan

  5. Hallo,

    die meisten Fehler sind ja schon benannt worden, mit Ausnahme von:

    header('Location: testshop4.php?PHPSESSID=$sessnum');

    Es kann wohl kaum sein das alle Besucher des Shops die gleiche Session nutzen, die auch zudem 100%ig nicht auf deinem Server existiert!

    Variablen in 'einfachen' Anführunszeichen werden nicht geparst sondern als Strings ausgegeben! *lol*

    Gruß,
    Horst