Bir adım daha ileri gidip bağlandığım sitenin SSL uyumlu olup olmadığını belirlemek için bir fırsatım var (bir proje kullanıcıdan URL'sini soruyor ve API paketimizi bir http veya https sitesine yüklediklerini doğrulamamız gerekiyor).
İşte kullandığım işlev - temel olarak, https'nin çalışıp çalışmadığını görmek için URL'yi cURL yoluyla çağırmanız yeterlidir!
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;
}
Bu, sadece https (soru sorulduğu gibi) kullanıyorsanız değil, aynı zamanda https kullanıyor olabilirseniz (hatta SHOULD) da bulmak için bulduğum en güvenilir yoldur.
NOT: Bir sitenin farklı http ve https sayfalarına sahip olması mümkündür (gerçekten de olası değildir ...) (bu nedenle http'yi kullanmanız istenirse, belki de değiştirmeniz gerekmez ..) Sitelerin büyük çoğunluğu aynıdır ve muhtemelen sizi yeniden yönlendirmelidir, ancak bu ek kontrolün kullanımı vardır (kesinlikle dediğim gibi, kullanıcının site bilgilerini girdiği ve sunucu tarafından emin olmak istediğiniz projede)