Robert Haupt: 200 Ok zuruecksenden

Hi,
ich bekomme von einer fremden Seite einen xml HTTP-Post, den ich mit $HTTP_RAW_POST_DATA auslese.

Dann kontrolliere ich den Inhalt und möchte, wenn er in Ordnung ist, ein "200 Ok" zurücksenden. Das geht wohl mit <?php header ("Status: 200 ok"); ?> aber geht das auch am Ende der Seite?

Passiert das zufällig schon automatisch wenn mein Script keinen Fehler generiert?

Danke und Gruss
Robert

  1. Moin,

    Dann kontrolliere ich den Inhalt und möchte, wenn er in Ordnung ist, ein "200 Ok" zurücksenden. Das geht wohl mit <?php header ("Status: 200 ok"); ?> aber geht das auch am Ende der Seite?

    Ja, allerdings können die Header prinzipbedingt nicht mehr gesendet werden, wenn schon eine Ausgabe erfolgt ist[1], d.h. du musst alle Ausgaben zurückhalten bis du weisst welche Header du senden willst. Trivial kannst du das zum Beispiel mit ob_start() machen. Das rufst du einfach irgendwo möglichst weit oben auf und alle deines Ausgaben gehen erstmal in einen Buffer. Am Ende der Skriptausführung wird der buffer automatisch gesendet, bzw. du kannst ihn auch schon vorher senden lassen. Details stehen in der Doku.

    Passiert das zufällig schon automatisch wenn mein Script keinen Fehler generiert?

    Ja.

    [1] Das ist nicht ganz richtig. HTTP an sich erlaubt das im Zusammenhang mit Chunked-Encoding schon, nur kann das kaum ein Client.

    --
    Henryk Plötz
    Grüße aus Berlin
    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
    1. Hallo Henryk,

      [1] Das ist nicht ganz richtig. HTTP an sich erlaubt das im Zusammenhang mit Chunked-Encoding schon, nur kann das kaum ein Client.

      Und Status-Header kann man da auf *keinen* Fall senden. ;-)

      Viele Grüße,
      Christian