您的位置:首页 > 理论基础 > 计算机网络

一个简陋的支持HTTPS的PHP CURL封装函数

2010-05-25 11:39 204 查看
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 设置为证书的路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: