文档章节

CURL不使用文件存取COOKIE

雪之丞
 雪之丞
发布于 2016/02/04 14:41
字数 371
阅读 54
收藏 5
点赞 1
评论 0

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
博文 209
码字总数 51065
作品 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
0
0
curl

吴之恒心
2017/02/28
0
0
php的curl函数模拟登陆获取cookie,然后能用获取到的cookie保持登录状态吗

我用php的curl函数模拟登陆,不是为了登录后抓取其他页面,是想模拟登陆获取到cookie,然后就直接用获取到的cookie保持登录状态,代码如下:

caesium
2015/07/29
2.2K
1
php curl post模拟登陆

<?php header("Content-type: text/html; charset=utf8"); //模拟登录 function login_post($url, $cookie, $post) { $curl = curl_init();//初始化curl模块 curlsetopt($curl, CURLOPTURL, ......

易小毅
2016/06/16
133
0
linux中shell curl命令获取http状态码

linux中shell curl命令获取http状态码 通过curl的-w参数我们可以自定义curl的输出,%{http_code}代表http状态码 代码如下 复制代码 # curl -I -m 10 -o /dev/null -s -w %{http_code} www.11...

Ltaotao
06/26
0
0
php使用curl模拟登录后采集页面的例子

php使用curl模拟登录后采集页面的例子,附带php curl模块的开启办法。 是从一个网站获取商品库存,但是这个网站需要登录,我用fsockopen传递了整个header头都没用,只能求助于curl了。 附带说...

夏日晚晴天
2013/11/04
0
0
PHP CURL cookies

php的curl扩展,在手册中有示例。先把cookie保存到一个文件,然后在curl中引用这个文件就可以了。 取cookie的参数是: curlsetopt ( $ch, CURLOPTCOOKIESESSION, true ); curlsetopt ( $ch, ...

明月惊鹊
2015/10/18
76
0
PHP CURL CURLOPT参数说明(curl_setopt)

CURLOPT_RETURNTRANSFER 选项:   curlsetopt($ch, CURLOPTRETURNTRANSFER,1);   如果成功只将结果返回,不自动输出任何内容。   如果失败返回FALSE   curlsetopt($ch, CURLOPTRETU...

JK_OPERA
2014/05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java集合元素的默认大小

当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使...

竹叶青出于蓝
9分钟前
1
0
Java快速开发平台,JEECG 3.7.7闪电版本发布,增加多套主流UI代码生成器模板

JEECG 3.7.7 闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升 ⊙提供5套新的主流UI代码生成器模板(Bootstrap表单+BootstrapTable列表\ ElementUI列表表单)...

Jeecg
13分钟前
0
0
export 和 module.export 的区别

在浏览器端 js 里面,为了解决各模块变量冲突等问题,往往借助于 js 的闭包把左右模块相关的代码都包装在一个匿名函数里。而 Nodejs 编写模块相当的自由,开发者只需要关注 require,exports,...

孟飞阳
15分钟前
1
0
技术教育的兴起

技术教育的兴起 作者: 阮一峰 1、 有一年,我在台湾环岛旅行。 花莲的海边,我遇到一对台湾青年夫妻,带着女儿在海滩上玩。我们聊了起来。 当时,我还在高校当老师。他们问我,是否觉得台湾...

吕伯文
15分钟前
0
0
Linux服务器下的HTTP抓包分析

说到抓包分析,最简单的办法莫过于在客户端直接安装一个Wireshark或者Fiddler了,但是有时候由于客户端开发人员(可能是第三方)知识欠缺或者其它一些原因,无法顺利的在客户端进行抓包分析,...

mylxsw
20分钟前
0
0
mybatis3-javaapi

sqlSessionFactoryBuilder->sqlSessionFactory->sqlSession<-rowbound<-resultHandler myBatis uses a Java enumeration wrapper for transaction isolation levels, called TransactionIsol......

writeademo
23分钟前
0
0
Java NIO:浅析I/O模型

也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念...

yzbty23
23分钟前
0
0
了解iOS消息推送一文就够:史上最全iOS Push技术详解

本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表。 1、引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ、微信等IM界面处于前台时,聊天消息和指令都会...

JackJiang-
25分钟前
0
0
Mysql汉子转拼音

update t_app_city SET CITY_NAME_BEGIN = ELT(INTERVAL(CONV(HEX(LEFT(CONVERT(CITY_NAME USING gbk),1)),16,10), 0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7, 0xBFA......

尘叙缘
27分钟前
0
0
大数据构建智慧城市“新引擎”,加速推进新旧动能转换

——“大数据与智慧城市”技术交流分享会——济南站召开 7月13日,“大数据携手智慧城市,助力山东新旧动能转换”技术交流分享会——济南站在山东信息通信技术研究院会议室成功举办,此次会议...

左手的倒影
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部