ฉันมีโอกาสที่จะก้าวไปอีกขั้นและตรวจสอบว่าไซต์ที่ฉันกำลังเชื่อมต่อนั้นสามารถใช้งาน SSL ได้หรือไม่ (หนึ่งโครงการถามผู้ใช้ถึง URL ของพวกเขาและเราต้องตรวจสอบว่าพวกเขาติดตั้ง API pack ของเราบนเว็บไซต์ http หรือ https)
นี่คือฟังก์ชั่นที่ฉันใช้ - โดยทั่วไปเพียงเรียก URL ผ่าน cURL เพื่อดูว่า 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 คุณอาจไม่จำเป็นต้องเปลี่ยน .. ) ไซต์ส่วนใหญ่ เหมือนกันและอาจเปลี่ยนเส้นทางตัวคุณเอง แต่การตรวจสอบเพิ่มเติมนี้มีการใช้งาน (แน่นอนอย่างที่ฉันพูดไว้ในโครงการที่ผู้ใช้ป้อนข้อมูลไซต์ของพวกเขาและคุณต้องการให้แน่ใจจากฝั่งเซิร์ฟเวอร์)