php curl cookie 读写
普通 curl post 请求
public static function curlPost($url, $post_fields = array(), $timeout = 5)
{
$timeout = intval($timeout);
if ($timeout <= 0) {
$timeout = 5;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //60秒
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, '');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
curl请求中设置 cookie
public function curlPost($url, $params)
{
$myCurl = curl_init(); // 初始化一个curl对象
curl_setopt($myCurl, CURLOPT_URL, $url); // 设置你需要抓取的URL
curl_setopt($myCurl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($myCurl, CURLOPT_POST, 1); curl_setopt($myCurl, CURLOPT_RETURNTRANSFER, 1); // 设置是将结果保存到字符串中还是输出到屏幕上,1表示将结果保存到字符串
curl_setopt($myCurl, CURLOPT_HEADER, 0);
curl_setopt($myCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($myCurl, CURLOPT_USERAGENT, 'CRM v1.0'); if (!empty($params['sessionid'])) { // 设置cookie
curl_setopt($myCurl, CURLOPT_COOKIE, 'JSESSIONID='.$params['sessionid'].'; PHPSESSID='.$params['sessionid']);
}
if(isset($params['requestHeaders'])) {
curl_setopt($myCurl, CURLOPT_HTTPHEADER, $params['requestHeaders']);
unset($params['requestHeaders']);
}
curl_setopt($myCurl, CURLOPT_POSTFIELDS, $params);
$header = '';
curl_setopt($myCurl, CURLOPT_HEADERFUNCTION, function($curl, $h) use (&$header) {
$header = $header.$h;
return strlen($h);
});
$re = curl_exec($myCurl); // 执行请求
curl_close($myCurl); // 关闭url请求
return $re;
}
在返回值中设置cookie (在服务端 登录 后台,再设置好cookie,返回 前端)
方式1:
public function actionLogin() {
$url = Yii::$app->params['url'];
$params = Yii::$app->request->post();
$res = $this->curlPost($url, $params);
$json = json_decode($res, true);
$clientinfo = isset($json['results'][0]['clientinfo'])?urldecode($json['results'][0]['clientinfo']):"";
$sessionid = isset($json['results'][0]['sessionid'])?urldecode($json['results'][0]['sessionid']):"";
header("Set-Cookie: clientinfo=$clientinfo; domain=baidu.com; path=/", false);
header("Set-Cookie: SESSIONID=$sessionid; path=/", false);
$this->jsonReturn($json);
}
方式2:
public function actionLogin() {
$url = Yii::$app->params['url'];
$params = Yii::$app->request->post();
$res = $this->curlPost($url, $params);
$json = json_decode($res, true);
$clientinfo = isset($json['results'][0]['clientinfo'])?urldecode($json['results'][0]['clientinfo']):"";
$sessionid = isset($json['results'][0]['sessionid'])?urldecode($json['results'][0]['sessionid']):"";
setcookie("clientinfo", $clientinfo);
setcookie("SESSIONID", $sessionid);
$this->jsonReturn($json);
}
php curl cookie 读写的更多相关文章
- 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他
[源码下载] 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cooki ...
- PHP curl cookie不识别
PHP curl cookie不识别 所以curl的时候别用setcookie 用了也没用
- angular中的cookie读写
AngularJS中对cookie的操作封装了一个单独的模块,模块名为ngCookies,若想使用需在页面中先引入angular-cookies.js: <script src="js ...
- IOS系统中,Web应用程序的cookie读写
在测试项目兼容性时,发现在iphone的浏览器中,cookie的读写异常,数据一致是错误的 最后发现cookie中的value需要进行encode = =!...... 写入cookie时,使用Ht ...
- Servlet实现Cookie读写
前言 程序员老婆让程序员去外面买东西,说,老公,你出去买一笼包子吧,遇到卖西瓜的就买一个.老公高兴的出去了,一会儿带着一个包子回来了,老婆很是郁闷问,怎么只买了一个包子,程序员说:因为我看到卖西瓜的了 ...
- 我的cookie读写
前后台必须一致, 后台: public static void SetCookie(string cookieName, string value, int expiresDays){ var ...
- JS cookie 读写操作
/*** ** 功能: cookie操作对象 ***/ var cookies = { /*** ** 功能: 写入cookie操作 ** 参数: name cookie名称 ** value coo ...
- 简单的cookie读写封装
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C#创建cookie读写cookie
一.创建cookie HttpCookie cookie = new HttpCookie("UserInfo");//创建多值cookie cookie ...
随机推荐
- Magicodes.WeiChat——发送模板消息
在微信开发中,经常会使用到模板消息.因此框架中对此进行了一些封装,并且提供了后台操作界面以及日志查看等功能,下面开始逐步介绍开发操作以及使用. 微信公众平台配置 首先,需要申请开通模板消息功能,如下图 ...
- 利用BGP虚拟下一跳实现链路负载均衡
最近针对BGP链路负载均衡方案“虚拟下一跳”进行了总结,现将总结的PPT贴上来.
- VS项目发布到本地IIS
一.项目介绍 ①web项目,开发工具Visual Studio,语言C# ②本地IIS,手机上或其他用户在和本地在同一个局域网(并不绝对是指同一个WIFI)内访问,同时要把防火墙关掉 ③IIS全名In ...
- [PHP] try catch在日常中的使用
1.try catch可以捕获上一层throw的异常 2.finally是不管try或者catch任何一块有return, 最终都会执行的块 3.try也是可以捕获到call_user_func_ar ...
- 微信小程序解密得到unoinid和手机号 (开放数据的校验和解密 获取手机号)
实际测试 两种方法都可以: 第一种方法: public static string DecodeUserInfo(string encryptedData, string iv, string cod ...
- 通俗易懂的来讲讲js的函数执行上下文
0.开场白 在平时编写JavaScript代码时,我们并不会和执行上下文直接接触,但是想要彻底搞懂JavaScript函数的话,执行上下文是我们绕不过去的一个知识点. 1.执行上下文栈 JavaScr ...
- SAP MM ME1M报表结果不科学?
SAP MM ME1M报表结果不科学? 做过SAP MM顾问的都知道,报表ME1M可以查询物料的info record列表,即是说可以以列表的形式批量显示多个物料的采购价格主数据. 但是这个报表有个不 ...
- EntityFramework实体默认值遇到Oracle自增主键
1. Oracle实现主键自动增长 一般我们在Oracle实现主键自动增长,通常通过序列加触发器实现. 定义序列用于获取递增数字 CREATE SEQUENCE 序列名 [INCREMENT BY n ...
- Neutron server的运行原理(未完待续)
1.Neutron server首先是一个web server, 对于http和https协议的报文进行响应. 2.Neutron server进程里面包含了一个WSGI 应用程序,以及不同模块的pl ...
- Android Studio获取开发版SHA1值和发布版SHA1值的史上最详细方法
前言: 今天我想把百度地图的定位集成到项目中来,想写个小小的案例,实现一下,但在集成百度地图时首先要申请秘钥,申请秘钥要用到SHA1值,所以今天就来总结一下怎样去获取这个值吧,希望对大家有帮助. 正常 ...