Hi!
Wozu dient denn eigentlich im Originalscript "return $res" - nur zum testen?
s.u.
Und wie kann ich überprüfen, ob die Daten auch tatsächlich von dem externen Formular abgeschickt wurden? Eine kleine Fehlerbehandlung habe ich schon eingebaut - aber ich vermute, daß das noch nicht reicht:
was genau willst/kannst Du kontrollieren?
function postToHost($host, $path, $referer, $data_to_send)
{
$fp=@fsockopen($host,80,$errorcode,$errortext,$timeout);
if($fp) {
fputs($fp, "POST $path HTTP/1.1\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Referer: $referer\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\n");
fputs($fp, "Connection: close\n\n");
fputs($fp, "$data_to_send\n");
hier wird die Ausgabe des HTNL-Formulars per fgets eingelesen
und am Ende mit return als Rückgabewert der Funktion zurückgegeben.
-------------------------------------------------
while(!feof($fp)) $res .= fgets($fp, 128);
fclose($fp);
return $res;
}
-------------------------------------------------
das ist sicher von Dir ;-)
-------------------------------------------------
else {
return "$host: $errortext ($errorcode)\n<br>\n";
}
-------------------------------------------------
Ich wißt nicht ob es diese Schreibweise gibt:
while {} else {}, keie Ahnung. Habs noch nie gesehen.
Aber es würde nichst bringen. Entweder funktionmiert der Aufbau der Socket-Verbindung nicht, dann bekommst Du da einen Fehler, wenn das funktiniert gibt es den Server und er wird Dir antwotrten, Du bekommst also auf alle Fälle was zurück. Z.B. wenn die Seite nicht existiert wenigstens einen 404er HTTP-Fehler.
Bei Erfolg erhälst Du HTTP-Statuscode 200 und dahinter den Quelltext der html-Seite. Wenn darin jetzt steht "Abschicken war erfolgreich" könntest Du mit sowas wie
if(!stristr($res,"Abschicken war erfolgreich")){
echo "fehler!!!";
}
(http://php.net/stristr) prüfen ob es funkttioniert hat.
Du solltest Dir auch nochmal im Manual http://php.net/fsockopen durchlesen, auch die Kommentare, da stehen viele Beispiele.
}
Was mich wundert ist, daß ein Absenden von Formularen auf einem fremden Server überhaupt möglich sein soll (was ich bislang noch nicht getestet habe) - das stellt doch eine Sicherheitslücke dar.
Jeder Trottel könnte das auch von hand mißbrauchen! Vielleicht nicht ganz so efektiv, kommt drauf an wieviele Freunde er hat die da mitmachen ;-)
Wer hindert mich z.B. daran, eine Firma mit gefaketer Post zu bombardieren, wenn ich ganz böse bin? ;-)
Niemand, höchtens das StGB ;-)
Grüße
Andreas