当前位置:Gxlcms > PHP教程 > CURL怎么获取HTTPS协议的状态码

CURL怎么获取HTTPS协议的状态码

时间:2021-07-01 10:21:17 帮助过:72人阅读

CURL如何获取HTTPS协议的状态码

$curl = curl_init();
$url='https://';
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl,CURLOPT_NOBODY,true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
echo curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);


我用这种方法打印出http的状态码没问题,但是换成https协议一直输出0. 请问https应该怎么获取
------解决思路----------------------
https 請求時要加上
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在


/** curl 获取 https 请求
* @param String $url 请求的url
* @param Array $data 要發送的數據
* @param Array $header 请求时发送的header
* @param int $timeout 超时时间,默认30s
*/
function curl_https($url, $data=array(), $header=array(), $timeout=30){

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

$response = curl_exec($ch);

$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if($error=curl_error($ch)){
die($error);
}

curl_close($ch);

return array($code,$response);

}

// 调用
$url = 'https://example.com/message.php';
$data = array('name'=>'fdipzone');
$header = array();

list($code, $response) = curl_https($url, $data, $header, 5);

echo $code;
echo $response;
?>

人气教程排行