CURL是PHP中一个非常强大的开源库,支持许多协议,包括HTTP、 FTP、 TELNET等。我们使用它来发送HTTP请求,可以通过灵活的选项设置不同的HTTP协议参数并支持HTTPS.CURL可以根据URL前缀是“ HTTP”还是“ HTTPS”自动选择是否发送加密的内容,还可以使用URL的语法模拟浏览器来传输数据 ,总之功能非常强大。
如果没有开启curl扩展,可以在php.ini里面开启curl这个扩展。下面我们来介绍一下curl的基本用法吧。
基本的语法
curl_setopt( $ch, CURLOPT_URL, $url );
$result = curl_exec( $ch );
curl_close( $ch );
#curl_init() 初始化CURL连接
#curl_setopt()函数将为一个CURL会话设置选项,option参数是你想要的设置,value是这个选项给定的值。
#curl_exec() 执行并获取HTML文档内容
#curl_close() 关闭cURL会话链接
开机自检
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'POST' );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query($params) );
#http_build_query()函数的作用是使用给出的关联或下标数组生成一个经过 URL-encode 的请求字符串。
# 使用 CURL来提交POST数据的时候,对数据自检。
Cookies的使用
curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
#设置一个整形数,作为最大超时,单位(秒)。
错误处理
# 如果CURLOPT_FAILONERROR为false,则http错误不会触发curl错误。
重定向设置
curl_setopt( $ch, CURLOPT_MAXREDIRS, 20 );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
#三个选项分别是允许重定向,最大重定向数和是否自动添加索引来源网址。
获取重定向目标URL
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
// option…
curl_exec( $ch );
$result = curl_getinfo( $ch, CURLINFO_EFFECTIVE_URL );
curl_close( $ch );
SSL措施
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
我们使用浏览器访问https的时候,浏览器会自动加载网站的安全证书进行加密。但是你用curl请求https时,没有通过浏览器,就只有自己手动增加一个安全证书进行加密,设置为FALSE 禁止 cURL 验证对等证书。
BASIC认证
$pass = '123456';
curl_setopt( $ch, CURLOPT_USERPWD, $id .":". $pass);
#传递一个形如[username]:[password]风格的字符串,作用PHP去连接。
UA设定
curl_setopt( $ch, CURLOPT_USERAGENT, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
#模拟游览器的ua,可以根据需要设置成pc端ua或者手机端的ua。
请求标头设置
"HTTP/1.0",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,<em>/</em>;q=0.8",
"Accept-Encoding:gzip ,deflate",
"Accept-Language:ja,en-us;q=0.7,en;q=0.3",
"Connection:keep-alive",
"User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:26.0) Gecko/20100101 Firefox/26.0"
);
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
#模拟游览器请求头信息,可以在游览器F12进入审查元素里面获得。
乱码对策
$result = curl_exec( $ch );
$content = mb_convert_encoding( $result, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' );
#目的是把UTF-8,GBK,GB2312,BIG5这几种编码转成UTF-8编码,防止乱码。
Social Plugin