Hallo,
Ich hab, den ganzen Code in den Papierkorb geworfen und komplett neu geschrieben.
das ist manchmal das beste, was man tun kann.
function PostToHost($host, $path, $referer, $data_to_send) {
$fp = fsockopen($host, 80, $errno, $errstr, 30);
var_dump($fp);
printf $errstr;if(!$fp){
// hier kommt später die Fehlermeldung hin
und genau dort ist auch erst die Ausgabe von $errstr sinnvoll.
} else {
fputs($fp, "POST $path HTTP/1.1\r\n");
Du übergibst einen leeren String als $path. Das gibt's aber in HTTP nicht; es entsteht also immer noch ein fehlerhafter Request-Header.
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);while(!feof($fp)) {
$res .= fgets($fp, 1000);
}
Hier sammelst du Responsedaten in $res, hast aber versäumt, $res vorher zu initialisieren.
fclose($fp);
return $res;
}
}$host = "www.google.de"
$path = "";
$data = "i=irgendwas&p=nochmalwas";$x = PostToHost($host, $pfad, "irgendeineRefferer.de", $data);
echo $x;
jetzt meldet $fp resource(20) of type (stream)
Das ist schon mal was - die Verbindung mit der Gegenstelle hat also geklappt.
Wenn ich den host und den path auf meine realen Daten setze, kommt das selbe
aber $x ist immer noch leer.
Das überrascht mich - zumindest die Response-Header würde ich erwarten. Hier wegen des Fehlers mit $path wohl am ehesten ein "400 Bad Request". Dass gar nichts kommt, finde ich eigenartig.
So long,
Martin
Zwei Kumpels sitzen vor dem Computer. "Welche Suchmaschine beutzt du eigentlich meistens?" - "Prima Vera." - "Hmm, kenn' ich gar nicht." Dann geht die Tür auf: "Schatz ich habe deine Sonnenbrille wiedergefunden!" - "Prima, Vera!"
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(