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