//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
function curl_request($url,$post='',$cookie='', $returnCookie=0)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
if($post) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
}
if($cookie) {
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
}
curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
if (curl_errno($curl)) {
return curl_error($curl);
}
curl_close($curl);
if($returnCookie){
list($header, $body) = explode("\r\n\r\n", $data, 2);
preg_match_all("/Set-Cookie:([^;]*);/", $header, $matches);
$info['cookie'] = substr($matches[1][0], 1);
$info['content'] = $body;
return $info;
}else{
return $data;
}
}
第一步 $ch = curl_init(); //这里可以传入地址
第二步 curl_setopt($ch,$opt,$val); //设置选项
curl_setopt_array($curl,$options); //批量的设置选项
1,CURLOPT_URL //设置地址
2,CURLOPT_RETURNTRANSFER //是否返回文件流而不是直接输出,默认是直接输出的,设置是true 的话表示返回文件流,默认false。直接输出
3,CURLOPT_HTTPHEADER,设置头信息
$header = [
'Host:www.maiziedu.com',
'Origin:http://www.maiziedu.com',
'Referer:http://www.maiziedu.com/',
'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
]
4,CURLOPT_COOKIESESSION,true //启用cookie
CURLOPT_COOKIEFILE,$cookiefile //保存cookie的文件
CURLOPT_COOKIEJAE,$cookiefile
CURLOPT_COOKIE,session_name().'='.session_id()
[cURL 函数]
curl_getinfo(); // 获取一个cURL连接资源句柄的信息
[curl_errno] — 返回最后一次的错误代码
[curl_error()]- 返回当前会话最后一次错误的字符串
5,CURLOPT_SSL_VERIFYPEER,false//跳过证书的检查,访问https
cURL文件上传
$data = ['name'=>'myfile' , 'file'=>'@/home/huyouheng/Pictures/icon.jpg'];
curl_setopt($curl,CURLOPT_POST,1); //开启POST
curl_setopt($curl,CURLOPT_POSTFIELDS,$data); //传输数据
file文件必须是绝对路径,前面必须加上@