Ho occasione di fare un ulteriore passo avanti e determinare se il sito a cui mi sto collegando è abilitato per SSL (un progetto chiede all'utente il proprio URL e dobbiamo verificare che abbiano installato il nostro pacchetto API su un sito http o https).
Ecco la funzione che uso - in pratica, basta chiamare l'URL tramite cURL per vedere se https funziona!
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;
}
Questo è il modo più affidabile che ho scoperto non solo per scoprire se stai usando https (come fa la domanda), ma se POTREBBE (o anche DOVREBBE) usare https.
NOTA: è possibile (anche se non proprio probabile ...) che un sito possa avere diverse pagine http e https (quindi se ti viene detto di usare http, forse non è necessario cambiare ..) La stragrande maggioranza dei siti sono gli stessi e probabilmente dovrebbero reindirizzare te stesso, ma questo controllo aggiuntivo ha il suo uso (certamente come ho detto, nel progetto in cui l'utente immette le informazioni sul sito e vuoi assicurarti dal lato server)