2013-4-17更新
請參看最新一篇《詳解使用PHP CURL訪問HTTPS》
--------------------------------------------------------------------------------------------------------------------
標題有點長,其實就是用來向https伺服器post資料
function curlPost($url, $data, $timeout = 30)<br />{<br /> $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;<br /> $ch = curl_init();<br /> $opt = array(<br /> CURLOPT_URL => $url,<br /> CURLOPT_POST => 1,<br /> CURLOPT_HEADER => 0,<br /> CURLOPT_POSTFIELDS => (array)$data,<br /> CURLOPT_RETURNTRANSFER => 1,<br /> CURLOPT_TIMEOUT => $timeout,<br /> );<br /> if ($ssl)<br /> {<br /> $opt[CURLOPT_SSL_VERIFYHOST] = 1;<br /> $opt[CURLOPT_SSL_VERIFYPEER] = FALSE;<br /> }<br /> curl_setopt_array($ch, $opt);<br /> $data = curl_exec($ch);<br /> curl_close($ch);<br /> return $data;<br />}<br />$data = curlPost('https://ssl.test.com', array('p'=>'hello'));<br />echo ($data);
-----------------------------我是分割線--------------------------------
其實這是告訴伺服器不進行SSL認證,並不是真的走HTTPS
如果要真正使用HTTPS,那麼需要提供CA認證
上面關於SSL部分按照如下設定:
CURLOPT_SSL_VERIFYPEER 設定為 true ,說明進行SSL認證認證CURLOPT_SSL_VERIFYHOST 設定為 2, 說明進行嚴格認證CURLOPT_CAINFO 設定為認證的路徑