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 ...
随机推荐
- kubernetes进阶之七:Service
1.概述 Service也是Kubernetes里的最核心的资源对象之一,Kubernetes里的每个Service其实就是我们经常提起的微服务架构中的一个“微服务”,之前我们所说的Pod.RC等资源 ...
- ROS笔记3 理解nodes
http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes 介绍几个命令行工具用法 roscore rosnode rosrun A node reall ...
- JS_正则表达式_获取指定字符之后指定字符之前的字符串
一个常见的场景,获取:标签背景图片链接: 如字符串:var bgImg = "url(\"https://img30.360buyimg.com/sku/jfs/t26203/26 ...
- [PHP] try catch在日常中的使用
1.try catch可以捕获上一层throw的异常 2.finally是不管try或者catch任何一块有return, 最终都会执行的块 3.try也是可以捕获到call_user_func_ar ...
- Java开发笔记(七十二)Java8新增的流式处理
通过前面几篇文章的学习,大家应能掌握几种容器类型的常见用法,对于简单的增删改和遍历操作,各容器实例都提供了相应的处理方法,对于实际开发中频繁使用的清单List,还能利用Arrays工具的asList方 ...
- 【学习笔记】tensorflow文件读取
目录 文件读取 文件队列构造 文件阅读器 文件内容解码器 开启线程操作 管道读端批处理 CSV文件读取案例 先看下文件读取以及读取数据处理成张量结果的过程: 一般数据文件格式有文本.excel和图片数 ...
- Python re 模块
Python re 模块 TOC 介绍 作用 正则表达式语法 贪婪和非贪婪 普通字符和特殊字符 分组(比较重要) re modul level 方法 正则表达式对象 匹配对象 常用例子 注意事项 Ja ...
- 驰骋工作流引擎JFlow与activiti的对比之4种包含多实例的模式
1. 无同步的多实例(MIwithout) 在流程中,一个活动可以激活多个实例,每个实例相互独立,并不需要在后面进行同步. 例子:比如用户购买了N本书,于是后续的支付账单.更新客户可以以本书为单位各自 ...
- [翻译] Oracle Database 12c 新特性Multitenant
译自官方白皮书http://www.oracle.com/technetwork/database/plug-into-cloud-wp-12c-1896100.pdf,包含新的云计算相关技术的介绍. ...
- OpenUDID 和 IDFA 比较
iOS标识符 现今来比较下,不同情况下两种标识符的变化情况.以下试验,每种标识符均分为存于Keychain和未存于Keychain的两种情况做比较. 广告标识符(IDFA-identifierForI ...