Ich habe Gelegenheit, noch einen Schritt weiter zu gehen und festzustellen, ob die Site, zu der ich eine Verbindung herstelle, SSL-fähig ist (ein Projekt fragt den Benutzer nach seiner URL und wir müssen überprüfen, ob er unser API-Paket auf einer http- oder https-Site installiert hat).
Hier ist die Funktion, die ich benutze - im Grunde rufe einfach die URL über cURL auf, um zu sehen, ob https funktioniert!
function hasSSL($url)
{
// take the URL down to the domain name
$domain = parse_url($url, PHP_URL_HOST);
$ch = curl_init('https://' . $domain);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); //its a HEAD
curl_setopt($ch, CURLOPT_NOBODY, true); // no body
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // in case of redirects
curl_setopt($ch, CURLOPT_VERBOSE, 0); //turn on if debugging
curl_setopt($ch, CURLOPT_HEADER, 1); //head only wanted
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // we dont want to wait forever
curl_exec($ch);
$header = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($header === 200) {
return true;
}
return false;
}
Dies ist der zuverlässigste Weg, den ich gefunden habe, um nicht nur herauszufinden, ob Sie https verwenden (wie in der Frage gestellt), sondern auch, ob Sie https verwenden KÖNNEN (oder sogar SOLLTEN).
HINWEIS: Es ist möglich (obwohl nicht sehr wahrscheinlich ...), dass eine Site unterschiedliche http- und https-Seiten hat (wenn Sie also aufgefordert werden, http zu verwenden, müssen Sie möglicherweise keine Änderungen vornehmen ..). Die überwiegende Mehrheit der Sites sind die gleichen und sollten Sie wahrscheinlich selbst umleiten, aber diese zusätzliche Überprüfung hat ihre Verwendung (sicherlich, wie gesagt, in dem Projekt, in dem der Benutzer seine Site-Informationen eingibt und Sie dies von der Serverseite aus sicherstellen möchten).