文档章节

CURL不使用文件存取COOKIE

雪之丞
 雪之丞
发布于 2016/02/04 14:41
字数 371
阅读 58
收藏 5

CURL是一个非常实用的PHP扩展,模拟用户登录时经常需要存取COOKIE信息,而使用COOKIEJAR和COOKIEFILE会产生两次货两次以上的I/O操作,性能效率自不必说,在第三方云平台(BAE SAE等),有时还需要操作STORAGE来实现存取COOKIE,比较麻烦,今天介绍一个CURL不使用文件存取COOKIE的方法:

COOKIEJAR/COOKIEFILE方式

/*-----保存COOKIE-----*/

$url = 'www.xxx.com';    //url地址

$post = "id=user&pwd=123456";    //POST数据

$cookie = tempnam('./', 'cookie');    //cookie临时文件

$ch = curl_init($url);    //初始化

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);    //返回获取的输出文本流

curl_setopt($ch,CURLOPT_POSTFIELDS, $post);    //发送POST数据

curl_setopt($ch,CURLOPT_COOKIEJAR, $cookie);    //保存获得的cookie

culr_exec($ch);    //执行curl

curl_close($ch);    // 关闭curl

/*-----使用COOKIE-----*/

curl_setpost($ch, CURLOPT_COOKIEFILE, $cookie);


新方式(无I/O操作):

/*-----保存COOKIE-----/

$url = 'www.xxx.com';    //url地址

$post = "id=user&pwd=123456";    //POST数据

$cookie = tempnam('./','cookie');    //cookie临时文件

$ch = curl_init($url) ;    //初始化

curl_setopt($ch, CURLOPT_HEADER, 1);    //将头文件的信息作为数据流输出

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    //返回获取的输出文本流

curl_setopt($ch, CURLOPT_POSTFIELDS, $post);    //发送POST数据

$content = curl_exec($ch);    //执行curl并赋值给$content

preg_match('/Set-Cookie:(.*);/iU', $content, $str);    //正则匹配

$cookie = $str[1];    //获取COOKIE(SESSIONID)

curl_close($ch);    //关闭curl

/*-----使用COOKIE-----*/

curl_setopt($ch, CURLOPT_COOKIE, $cookie);

原理:正则获取头文件信息总的SESSIONID,熟悉SESSION和COOKIE的同学应该知道,SESSION保存哎服务器端并发给本地一个COOKIE凭证(SESSION),凭SESSIONID即可读取到SESSION数据

本文转载自:http://ju.outofmemory.cn/entry/35292

雪之丞
粉丝 13
博文 219
码字总数 51065
作品 0
浦东
程序员
私信 提问
《CURL技术知识教程》系列分享专栏

《CURL技术知识教程》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201737.html 文章 PHP采集相关教程之一 CURL函数库 php中通过curl模拟登陆discuz论坛的实现...

开元中国2015
2018/11/06
46
0
《CURL技术知识教程》系列技术教程整理

《CURL技术知识教程》系列技术教程整理 有时间会不断更新,大家有什么好的推荐的可以在下面回复,我会酌情收录 1PHP采集相关教程之一 CURL函数库 2php中通过curl模拟登陆discuz论坛的实现代码...

开元中国2015
2015/05/07
470
0
xiaozhuai/cxxurl

CXXCurl [English README] [中文说明] CXXUrl 是基于libcurl的c++库,但它不仅仅只是一个curl的面向对象的c++封装 如果你想了解更多关于curl的信息,访问 http://curl.haxx.se/ Under MIT L...

xiaozhuai
2017/01/05
0
0
php curl请求信息和返回信息设置代码实例,特别是在请求过程中存在重定向的时候获取请求返回头信息

在用curl抓取网页内容的时候,经常要知道,网页返回的请求头信息,和请求的相关信息,特别是在请求过程中存在重定向的时候获取请求返回头信息对分析请求内容很有帮助 下面就是一个请求中存在...

蜗牛奔跑
2015/06/26
2.3K
0
curl

吴之恒心
2017/02/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

未初始化指针问题

《C和指针》书上说 int *a ... *a = 12 这样写声明一个变量,但未对指针初始化 如果指针是函数的形参,比如 void func(int *a) { (* a) = 12;//这样操作有无问题? } ======================...

天王盖地虎626
20分钟前
6
0
Python的一些细节 II

1. isinstance() 与 type() 区别 class type(name, bases, dict) name -- 类的名称。 bases -- 基类的元组。 dict -- 字典,类内定义的命名空间变量。 返回值:一个参数,返回对象的类型;三...

Eappo_Geng
32分钟前
2
0
笔试题-武汉珞珈德毅笔试题

1.写出Java语言的基本数据类型。 2.简述cookie和session区别。 1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行...

QuasimodoALei
43分钟前
5
0
IDEA Maven project: 'xxx/pom.xml' already exists in VFS

Failed to create a Maven project: ‘xxx/pom.xml‘ already exists in VFS idea创建项目后,发现项目有问题,删除后重新创建,提示错误如下。 解决办法 1.通过idea打开任意一个项目 2.File...

国产大熊猫
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部