_Der_ Fehler ist gefunden und weiter unten wird das Skript dann auch ohne die weiteren Fehler samt Beschreibung nochmal gepostet werden
Hello,
ich mühe mich ab, per PHP Post2Host mit SSL zum Laufen zu bringen. Leider bekomme ich immer nur die Statusmeldung von Server:
HTTP/1.1 400 Bad Request
Date: Mon, 27 May 2019 12:07:32 GMT
Server: Apache/2.2.22 (Debian)
Vary: Accept-Encoding
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
Das Testscript zum Posten sieht so aus:
<?php ### function_post2host.php ###
function PostToHost($host,$path,$data,$ssl=FALSE,$autoport=TRUE,$user=FALSE,$pass=FALSE,$referer=FALSE)
{
//Daten anpassen
if(is_array($data))
{
$data_to_send = '';
foreach($data as $name => $var)
{
$data_to_send .= urlencode($name).'='.urlencode($var).'&';
}
$data_to_send = substr($data_to_send,0,-1);
}
else $data_to_send = 'data=' . urlencode($data);
//SSL einbinden, falls gewünscht
if($ssl === TRUE)
{
$port = 443;
$host = 'ssl://' . $host;
}
else {$port = 80; }
if ($autoport === TRUE)
{
### alter nothing;
}
elseif (is_numeric($autoport))
{
$port = $autoport;
}
else {return false;}
//Verbindung öffnen
if (false === ($fp = fsockopen($host, $port)))
{
return false;
}
stream_set_timeout($fp, 30);
//Header erzeugen
fputs($fp,"POST ".$path." HTTPS/1.1\r\n");
fputs($fp,"Host: ".$host."\r\n");
if($user != "" && $pass != "")
{
fputs($fp, "Authorization: Basic " . base64_encode($user.":".$pass)."\r\n");
}
if (FALSE !== $referer)
{
fputs($fp, "Referer: " . urlencode($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);
//Antwort abfangen
$res = '';
while(!feof($fp))
{
$res .= fgets($fp, 128);
}
//Verbindung schliessen
fclose($fp);
//Antwort zurückgeben
return $res;
}
###--------------------------------------------------------------------
# PostToHost($host,$path,$data,$ssl=FALSE,$autoport=TRUE,$user=FALSE,$pass=FALSE,$referer=FALSE)
$_data = array();
$_data ['eins'] = 'erster Eintrag';
$_data ['zwei'] = 'zweiter Eintrag';
$_data ['drei'] = 'dritter Eintrag';
echo PostToHost("bitworks.de",'/sensor/postresponder.php',$_data,TRUE);
?>
Im Error-Log des angeposteten Servers ist leider nichts zu finden.
Wo steckt der Fehler? Wie kann sich zum Debugging vorgehen?
Glück Auf
Tom vom Berg
--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.