Hi Henryk!
Nuja, vom Prinzip her gibt es keine Beschränkungen für die Daten innerhalb des Bodys, du kannst also auch problemlos binäre Daten da reinpacken, _wenn_ die Gegenseite sie so erwartet und versteht. Wenn ich deinen Aufbau richtig in Erinnerung habe verwendest du aber --data von cURL und sendest die Daten damit url-encoded, so dass sie für PHP wie das Ergebnis eines ganz normalen Formular-Submits aussehen.
so mach ich das bis jetzt:
<?
$fp = popen("curl --data @- https://www.server.de/env.php > c:/www/curlausgabe.txt", "w");
fputs($fp, "clientdata=".$dump);
pclose($fp);
?>
auf der Gegenseite ertwarte ich das bis jetzt in $_POST["clientdata"]
Wenn ich die cURL-manpage richtig verstehe, willst du stattdessen einfach --form bla=@- statt --data @- verwenden, wobei du dann die binären Daten an cURL gibst, ohne urlencoding und client_dump= davorzuschreiben. Das sollte dann für PHP so aussehen, als hättest du im Formularfeld namens bla eine Datei hochgeladen.
Ich habe das jetzt mal so versucht:
<?
$fp = popen("curl --form @- https://www.server.de/env.php > c:/www/curlausgabe.txt", "w");
fputs($fp, $dump);
pclose($fp);
?>
Was ich in diesem Fall aber bekomme ist ein leeres $_POST["@-"]
und ein
$_ENV["CONTENT_TYPE"] = multipart/form-data; boundary=curlhMHWAiJsTD38wJxNuc4k6wqFkJp
Dann habe ich es mal so versucht:
curl --data-binary @- https://www.server.de/env.php
da bekomme ich allerdings $_SERVER["CONTENT_TYPE"] = application/x-www-form-urlencoded
sonst nichts. $_FILES ist in allen Fällen leer.
Jo, HTTP hat kein Problem mit dem Senden von binären Daten, sonst würdest du auch nie ein Bild zu Gesicht bekommen.
Und CURL braucht keinen Content-Type um das zu verstehen?
Vielen Dank und viele Grüße,
Andreas