私はさらに一歩進んで、接続しているサイトがSSL対応かどうかを判断する機会があります(1つのプロジェクトがユーザーにURLを要求し、httpまたはhttpsサイトにAPIパックがインストールされていることを確認する必要があります)。
これが私が使用する関数です-基本的に、cURLを介してURLを呼び出し、httpsが機能するかどうかを確認します!
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;
}
これは、(質問が尋ねるように)httpsを使用しているかどうかを調べるだけでなく、httpsを使用している可能性がある(または使用する必要がある)場合に最も信頼できる方法です。
注:(実際の可能性は低いですが)サイトに異なるhttpページとhttpsページが含まれている可能性があります(httpを使用するように指示された場合、変更する必要はないかもしれません。)同じであり、おそらく自分自身を再ルーティングする必要がありますが、この追加のチェックには用途があります(確かに、私が言ったように、ユーザーがサイト情報を入力し、サーバー側から確認したいプロジェクトで)。