Andreas Korthaus: Probleme mit POST Header (multipart/form-data)

Beitrag lesen

Hallo!

Ich habe mal versucht selbst einen POST Header zu schreiben, mit dem  ich später einmal einen gz-komprimierten String übertragen will. Aber es funkioniert noch nichtmal mit einem "normalen" String. Mein Script:

<?php

$host = "www.server.de";
 $path = "/test.php";
 $boundary ="-----------------------------305242850528394";

$name = "da_name";
 $filename = "da_filename";
 $gzstring = "HIER_SOLL_MAL_EIN_GZ-STRING_HIN";

$data = $boundary."\n";
 $data .= "Content-Disposition: form-data; ";
 $data .= "name="$name"; ";
 $data .= "filename="$filename"\n";
 $data .= "Content-Type:text/plain\n\n";
 $data .= $gzstring."\n";

$header = "POST $path HTTP/1.1\n";
    $header .= "Host: $host\n";
 $header .= "Content-length: ".strlen($data)."\n";
    $header .= "Content-type: multipart/form-data; boundary=$boundary\n\n";
 $header .= $data;
 $header .= $boundary."--\n";

$fp = fsockopen($host, 80);
    fputs($fp, $header);

while(!feof($fp)) {
        $res .= fread($fp,1);
    }
    fclose($fp);

echo $res;
?>

Das Script test.php enthält folgenden Code:

<?php
echo "<pre>";
print_r($GLOBALS);
echo "</pre>";
?>

Aber was ich zurückbekomme ist irgendwie "kaputt":

erst normal:
HTTP/1.1 200 OK Date: Sun, 29 Sep 2002 00:09:44
...

es fängt korrekt die Ausgabe von $GLOBALS an, dann auf einmal:

[GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1

1

1

1
[
e
REQUEST_METHOD
5
] =>
4
POST
1

1

1

1

1

1
[
c
QUERY_STRING
5
] =>
1

1

1

1

1

1
[
b
REQUEST_URI
5
] =>
d

usw, bis zum Ende, und dann kommt

Method Not Implemented
-----------------------------305242850528394-- to / not supported.

Invalid method in request -----------------------------305242850528394--

Als Vorlage für den Request dienten mir zum einen mein eigener "Mitschnitt"(</?m=136310&t=24666>) als auch ein Artikel aus den FAQ http://www.dclp-faq.de/q/q-code-upload.html

Hat jemand ne Ahnung was ich falsch mache?

Viele Grüße
Andreas