J'ai l'occasion d'aller plus loin et de déterminer si le site auquel je me connecte est compatible SSL (un projet demande à l'utilisateur son URL et nous devons vérifier qu'il a installé notre pack API sur un site http ou https).
Voici la fonction que j'utilise - en gros, appelez simplement l'URL via cURL pour voir si https fonctionne!
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;
}
C'est le moyen le plus fiable que j'ai trouvé pour non seulement savoir si vous utilisez https (comme le demande la question), mais si vous POUVEZ (ou même DEVRIEZ) utiliser https.
REMARQUE: il est possible (mais pas vraiment probable ...) qu'un site puisse avoir des pages http et https différentes (donc si on vous dit d'utiliser http, peut-être que vous n'avez pas besoin de changer ..) La grande majorité des sites sont les mêmes, et devraient probablement vous rediriger eux-mêmes, mais cette vérification supplémentaire a son utilité (certainement comme je l'ai dit, dans le projet où l'utilisateur entre les informations de son site et vous voulez vous en assurer du côté serveur)