放了個假發現以前寫的程序的模擬登陸不管用了,中間輸出,發現curl向https發請求時沒有返回數據,輸出錯誤信息,得到:
curl_errno($ch) -----> 35 curl_error($ch) -----> error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
查了很多資料,終於發現要強行指定SSL的版本,即加上下面的話就可以了:
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
整個函數也貼下來供參考:
function sendPostHttps($url, $postData, $header=0, $referer=""){ $ch = curl_init () ; curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url) ; curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_REFERER, $referer); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSLVERSION, 3); $result = curl_exec($ch); curl_close($ch); return $result; }
