我在php中有一个基于卷发的函数来检查一个网站是否在线运行良好,但是我注意到它只适用于http链接,而不是https链接。
有人知道如何更新此函数以支持https链接吗?
function isDomainAvailible($domain){
    // Check, if a valid url is provided
    if(!filter_var($domain, FILTER_VALIDATE_URL)){
        return false;
    }
    // Initialize curl
    $curlInit = curl_init($domain);
    curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
    curl_setopt($curlInit,CURLOPT_HEADER,true);
    curl_setopt($curlInit,CURLOPT_NOBODY,true);
    curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);
    // Get answer
    $response = curl_exec($curlInit);
    curl_close($curlInit);
    if ($response){ 
        return true;
    } else { 
        return false;
    }
}发布于 2015-03-23 12:45:35
如果您想使用您的函数并且它需要https支持,那么。您可以下载此文件cacert.pem并在函数中添加路径,如下所示:
function isDomainAvailible($domain){
// Check, if a valid url is provided
if(!filter_var($domain, FILTER_VALIDATE_URL)){
    return false;
}
// Initialize curl
$curlInit = curl_init($domain);
curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curlInit,CURLOPT_HEADER,true);
curl_setopt($curlInit,CURLOPT_NOBODY,true);
curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curlInit, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
curl_setopt($curlInit, CURLOPT_PROTOCOLS, CURLPROTO_HTTP);
curl_setopt ($curlInit, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");
// Get answer
$response = curl_exec($curlInit);
curl_close($curlInit);
   if ($response){ 
    return 1;
   } else { 
    return 0;
   }
}
$domain = 'https://www.facebook.com';
$avi = isDomainAvailible($domain);
echo $avi;发布于 2015-03-23 12:47:06
尝试将其添加到curl函数中。
curl_setopt($curlInit, CURLOPT_SSL_VERIFYPEER, false);发布于 2015-03-23 12:49:03
当你说,“我注意到它只适用于http链接,而不是https链接”时,你到底是什么意思?cURL的工作方式是相同的,您只需向它传递一个带有https协议的url,而不是http。问题可能是别的什么。这听起来像你遇到的麻烦吗?如何使用php发送HTTPS帖子
https://stackoverflow.com/questions/29210179
复制相似问题