Tenho a oportunidade de dar um passo adiante e determinar se o site ao qual estou me conectando é compatível com SSL (um projeto solicita ao URL o usuário e precisamos verificar se ele instalou nosso pacote de API em um site http ou https).
Aqui está a função que eu uso - basicamente, basta ligar para o URL via cURL para ver se o https funciona!
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;
}
Esta é a maneira mais confiável que eu encontrei, não apenas para descobrir se você está usando https (como a pergunta pergunta), mas se você PODERIA (ou DEVE) usar https.
NOTA: é possível (embora não seja muito provável ...) que um site possa ter páginas http e https diferentes (por isso, se lhe for pedido para usar http, talvez você não precise alterar ..) A grande maioria dos sites são os mesmos e provavelmente devem redirecionar a si mesmos, mas essa verificação adicional tem seu uso (certamente como eu disse, no projeto em que o usuário insere as informações do site e você quer ter certeza do lado do servidor)