[PHP] fsockopen: POST und GET übertragen

wahnsinn

Teilzeitcholeriker
ID: 13929
L
20 April 2006
1.168
152
Hallo zusammen,

gibt es einen Weg um bei fsockopen einige Parameter per POST und einige per GET zu übertragen?

Im Moment bin ich mit meinem Know-How nur in der Lage die Parameter entweder mit GET oder mit POST zu übergeben, indem ich Zeile 8 ändere. Aber ich würd das gern getrennt machen.

PHP:
$host = "www.example.com";
$uri  = "/path/file.php?getVar=getValue&postVar=postValue";
$usr  = 'user';
$pwd  = 'pass';

header("Content-type: text/plain");
$sock = fsockopen($host, 80, $errno, $errstr, 5); // 80 = Port, 5 = Timeout
fputs($sock, "POST ".$uri." HTTP/1.1\r\n");
fputs($sock, "Host: ".$host."\r\n");
fputs($sock, "Authorization: Basic ".base64_encode($usr.":".$pwd)."\r\n");
fputs($sock, "Connection: close\r\n\r\n");
while(!feof($sock))
echo fgets($sock, 4096); // Antwort lesen
fclose($sock);

Bitte fragt nicht nach dem "warum" - ich muss halt einfach. ;)
 
Versteh das Problem ned. Anders kannst du es ned. Du kannst entweder POST oder GET an den HTTP-Server senden.
Wenn du "mischen" willst, muss der Request schon
Code:
POST /foo.php?getvar=bar HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42

foobar=4711&foobar2=4711&paddingto42=ggggg
in der Art aussehen.
Hab zwar noch nie so einen Request gesehen, aber wenn man im HTML-Formular
HTML:
<form action="foo.php?getvar=bar" method="post">
verwendet, müsste dieser Request erzeugt werden.

edit:
Ja, jetzt versteh ich dein Problem. In der URI werden nur GET-Parameter übermittelt. Dein obiger Code für POST ist also Quark, weil bei POST die Parameter nach dem Header, also als Content, gesendet werden.
 
Kleiner Tip für die Zukunft: Wireshark
Du kannst deinem Browser ja zugucken, was er alles sendet und empfängt.