Mit PHP und curl eine https (SSL) Seite aufrufen

Expand / Collapse
 

Mit PHP und curl eine https (SSL) Seite aufrufen


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);

?>



     
Tags:



Details
Zuletzt geändert:Dienstag, 24. Februar 2009
Zuletzt geändert von: Administrator
Typ: HOWTO
Rated 3 stars based on 4 votes.
Beitrag wurde 39.526* angeschaut.
Optionen