Andreas Dölling: POST-Daten und -Datei per Socket

Hallo,

ich laboriere hier schon seit geraumer Zeit an einer POST-Anfrage herum, die ich über einen Proxy an einen externen Zielrechner senden will.
Grundsätzlich klappt das, und vor allem klappt auch das, was ich für problematischer gehalten hatte: die gepostete Datei kommt an.
Das Problem sind die die übrigen POST-Daten, also die Inhalte der Textfelder des versendeten Formulars. Die kommen nicht als POST-Daten beim Zielrechner an.
Ich vermute, daß ich einen Fehler im Aufbau meines Requests habe. So sieht das im Moment aus:

POST http://{url_zielrechner} HTTP/1.0
Host: {url_proxy}
Referer: http://{url_request_script}
User-Agent: Mozilla/4.05C-SGI [en] (X11; I; IRIX 6.5 IP22)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Charset: iso-8859-1,*,utf-8
Proxy-Authorization: Basic YjEzOAcfOnTrimV0
Content-Type: multipart/form-data; boundary=---------------------------e18cfe46b9
Content-Length: 191674
Connection: close

-----------------------------e18cfe46b9
Content-Type: application/x-www-form-urlencoded
Content-length: 51
firstname=Theo&lastname=Test&button_submit=Absenden

-----------------------------e18cfe46b9
Content-Disposition: form-data; name="picture"; filename="testbild.jpg"
Content-Type: image/pjpeg

ÿØÿà[.....]
-----------------------------e18cfe46b9--

Wie gesagt: das Bild wird beim Zielrechner erkannt ($_FILES), aber $_POST ist leer.

Könnt Ihr mir weiterhelfen?

Thanx und ciao,
Andreas

--
"Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
  1. Hallo,

    Ich vermute, daß ich einen Fehler im Aufbau meines Requests habe. So sieht das im Moment aus:

    -----------------------------e18cfe46b9
    Content-Type: application/x-www-form-urlencoded
    Content-length: 51
    firstname=Theo&lastname=Test&button_submit=Absenden

    Da sieht falsch aus. Bei Content-Type: multipart/form-data kommen _alle_ Daten, auch die Form-Feldinhalte, in jeweils _einem_ Part, getrennt durch boundary.
    Also:
    -----------------------------e18cfe46b9
    Content-Disposition: form-data; name="firstname"

    Theo
    -----------------------------e18cfe46b9
    Content-Disposition: form-data; name="lastname"

    Test
    -----------------------------e18cfe46b9
    Content-Disposition: form-data; name="button_submit"

    Absenden
    -----------------------------e18cfe46b9

    Content-Disposition: form-data; name="picture"; filename="testbild.jpg"
    Content-Type: image/pjpeg

    ÿØÿà[.....]
    -----------------------------e18cfe46b9--

    Wie gesagt: das Bild wird beim Zielrechner erkannt ($_FILES),

    Das Bild hat ja auch seinen eigenen Part.

    Zeilenwechsel ist jeweils CRLF.

    viele Grüße

    Axel

    1. Hallo Axel,

      danke für Deinen Tip! Das war die Lösung. Darauf wäre ich nicht gekommen, weil ich überall immer nur gelesen habe, daß man die POST-Daten wie einen GET-String in den Request schreibt.
      Dank Deinem Hinweis klappt es jetzt aber.

      Thanx und ciao,
      Andreas

      --
      "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)