普通 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 读写的更多相关文章

  1. 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他

    [源码下载] 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cooki ...

  2. PHP curl cookie不识别

    PHP curl cookie不识别 所以curl的时候别用setcookie 用了也没用

  3. angular中的cookie读写

    AngularJS中对cookie的操作封装了一个单独的模块,模块名为ngCookies,若想使用需在页面中先引入angular-cookies.js: <script src="js ...

  4. IOS系统中,Web应用程序的cookie读写

    在测试项目兼容性时,发现在iphone的浏览器中,cookie的读写异常,数据一致是错误的 最后发现cookie中的value需要进行encode  = =!...... 写入cookie时,使用Ht ...

  5. Servlet实现Cookie读写

    前言 程序员老婆让程序员去外面买东西,说,老公,你出去买一笼包子吧,遇到卖西瓜的就买一个.老公高兴的出去了,一会儿带着一个包子回来了,老婆很是郁闷问,怎么只买了一个包子,程序员说:因为我看到卖西瓜的了 ...

  6. 我的cookie读写

    前后台必须一致, 后台: public static void SetCookie(string cookieName, string value, int expiresDays){    var ...

  7. JS cookie 读写操作

    /*** ** 功能: cookie操作对象 ***/ var cookies = { /*** ** 功能: 写入cookie操作 ** 参数: name cookie名称 ** value coo ...

  8. 简单的cookie读写封装

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. C#创建cookie读写cookie

    一.创建cookie HttpCookie cookie = new HttpCookie("UserInfo");//创建多值cookie              cookie ...

随机推荐

  1. 痞子衡嵌入式:常用的数据差错控制技术(1)- 重复校验(Repetition Code)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式里数据差错控制技术-重复校验. 在嵌入式应用里,除了最核心的数据处理外,我们还会经常和数据传输打交道.数据传输需要硬件传输接口的支持 ...

  2. SpringMVC集成rabbitmq:优化秒杀下单环节

    前言 上一篇在springboot中基于自动配置集成了rabbitmq.那么回到最初的话题中就是想在秒杀下单环节增加排队机制,从而达到限流的目的. 优化秒杀下单流程 之前是在控制器里拿到客户端请求后直 ...

  3. InnoSetup 客户端程序打包教程

    之前介绍过InstallShield打包工具,本文再介绍更加方便的打包工具Inno Setup Inno Setup相对来说,比InstallShield更容易使用,不需要在VS中创建项目,只要提供D ...

  4. InnoSetup 使用

    目录 简介 示例脚本 相关参考 在进行 WPF 程序打包发布的时候如果对程序打包没有特别高的要求,InnoSetup 足以胜任普通的程序打包发布需求,它支持安装包加密,安装包升级安装,注册表操作等常规 ...

  5. ElasticSearch-6.2安装head插件

    环境 Windows10企业版X64 JDK-1.8 ElasticSearch-6.2.4 node-v10.1 git客户端 步骤 安装node到K盘.如K:\nodejs. 把NODE_HOME ...

  6. 轻松搞定RocketMQ入门

    RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RocketMQ网络 ...

  7. 分析解剖微服务系列(二)-SOA和微服务异同

    微服务架构模式成熟之前,软件领域讨论的比较多的是SOA的架构模式.SOA早在1996年就由Gartner提出,作为面向服务的架构模式,SOA的理念是对于复杂的企业IT系统,按照不同的.可重用的粒度划分 ...

  8. Dynamics 365 POA表记录的查询

    微软动态CRM专家罗勇 ,回复313或者20190311可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . PrincipalO ...

  9. CPP内存检测

    对C.C++的内存泄露.内存溢出等检查,经过这两天的查资料,总体来说可以使用Valgrind, AddressSanitizer, Dr.Memory等.其中Valgrind对程序运行速度影响较大,运 ...

  10. 一个「学渣」从零开始的Web前端自学之路

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...