2013-4-17更新
请参看最新一篇《详解使用PHP CURL访问HTTPS》
--------------------------------------------------------------------------------------------------------------------
标题有点长,其实就是用来向https服务器post数据
function curlPost($url, $data, $timeout = 30) { $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE; $ch = curl_init(); $opt = array( CURLOPT_URL => $url, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_POSTFIELDS => (array)$data, CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => $timeout, ); if ($ssl) { $opt[CURLOPT_SSL_VERIFYHOST] = 1; $opt[CURLOPT_SSL_VERIFYPEER] = FALSE; } curl_setopt_array($ch, $opt); $data = curl_exec($ch); curl_close($ch); return $data; } $data = curlPost('https://ssl.test.com', array('p'=>'hello')); echo ($data);
-----------------------------我是分割线--------------------------------
其实这是告诉服务器不进行SSL认证,并不是真的走HTTPS
如果要真正使用HTTPS,那么需要提供CA证书
上面关于SSL部分按照如下设置:
CURLOPT_SSL_VERIFYPEER 设置为 true ,说明进行SSL证书认证 CURLOPT_SSL_VERIFYHOST 设置为 2, 说明进行严格认证 CURLOPT_CAINFO 设置为证书的路径