php curl 请求携带cookie
//定义存储cookie文件位置
protected $filename = 'dirname(__FILE__).'/cookie.txt''
/**
* 请求三方接口
*
* @param string $url 接口链接
* @param string $method 请求方式 get/post
* @param array $header 请求头
* @param array $param 请求参数
* @param bool $cookie 是否携带cookie
* @param string $cookie_file cookie文件位置
* @return bool|string
*/
public function curl($url = '', $method = 'get',$header = [],$param = [],$cookie=false,$cookie_file='')
{
$val = strtolower($method) == 'get' ? 0 : 1;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, $val);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设置为不是https也可以访问
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
//设置header头
if ( !empty($header) ) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
//设置post的数据包,即传参
if(!empty($param) && $val == 1){
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
}
//是否需要设置cookie
if($cookie){
//携带cookie
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
}
//打印请求头
$header_info = curl_getinfo($ch);
//dd($header_info);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
//请求第三方登录接口
public function login(){
//创建文件使文件可写
if(!file_exists($this->filename)) {
$myfile = fopen($this->filename, "w");
fclose($myfile);
}
//登录的接口
$url = '';
//请求头
$header = array(
'Accept: application/json, text/plain, */*',
'Accept-Language: zh-CN,zh;q=0.9',
'Cache-Control: no-cache',
'Connection: keep-alive',
'Content-Type: application/json;charset=UTF-8',
);
//'Content-Type: application/json;charset=UTF-8' 如果是表单形式 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
//请求参数
$params = [
'username' => '',
'password' => '',
];
//由于是json格式
$param = json_encode($params,JSON_UNESCAPED_UNICODE);
$curl = curl_init();
//设置表头
curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
curl_setopt($curl, CURLOPT_URL, $url);
// 设置为POST请求
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
//传送的数据
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
//获取cookie并存储
curl_setopt($curl,CURLOPT_COOKIEJAR,$this->filename);
$result=curl_exec($curl);
}
//调用
public function t(){
$header = array(
'Accept: application/json, text/plain, */*',
'Accept-Language: zh-CN,zh;q=0.9',
'Cache-Control: no-cache',
'Connection: keep-alive',
'Content-Type: application/json;charset=UTF-8',
'Pragma: no-cache',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
);
//请求参数
$params = [];
$param = json_encode($params,JSON_UNESCAPED_UNICODE);
$this->curl($url,'post',$header,$param,true,$this->filename);
}
本作品采用《CC 协议》,转载必须注明作者和本文链接