Problem:
Der Aufruf von PHP und curl mit http:// Seiten funktioniert, aber mit https:// wird nichts zurückgeliefert. Es kommt auch keine Fehlermeldung.
Lösung:
Man muss 2 zusätzliche Curl Optionen angeben, dann funktioniert es.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
Hier eine komplett ausprogrammierte Funktion:
<?php
// $sURL = Internetseite, die aufgerufen werden soll
// $sMessage = Array mit POST-Variablen (optional)
function CurlPost($sURL,$sMessage = "")
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $sURL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $sMessage);
$sResult = curl_exec($ch);
if (curl_errno($ch))
{
// Fehlerausgabe
print curl_error($ch);
} else
{
// Kein Fehler, Ergebnis zurückliefern:
curl_close($ch);
return $sResult;
}
}
// Beispielaufruf:
print CurlPost("https://www.ecs-webhosting.de/de/kontakt.htm");
// Beispielaufruf mit POST-Variablen:
$body = array(
"kontakt" => "Max Mustermann",
"telefon" => "0911-59769540",
"email" => "",
"kommentar" => "Eine Testnachricht"
);
// Dieser Aufruf ergibt die Fehlermeldung der Kontaktseite (email fehlt):
print CurlPost("https://www.ecs-webhosting.de/de/kontakt_ok.php",$body);
?>