SAE上使用curl函数附带cookie的一些细节

SAE禁止了本地的IO操作,所以在使用上需要单独修改下代码!做过小偷程序或者模拟登录时,我想很多童鞋都用过curl函数。SAE已经完全兼容curl函数(内部用FetchURL实现)。在使用curl发送http请求时,附带cookie却有些头疼了。下面讲讲个人的思路,如果有更好的方案,欢迎补充~

首先我在自己的网站做了个php脚本,需要接受两个通过post发送的字段,username为admin,password为123456,当用户名和密码正确显示"已登录",并给COOKIE随便赋一些值,如果没有接收到数据或数据错误显示“未登录”,如果已登录,存在session的时候则显示“admin”,并打印COOKIE数组。
我现在的需求是,在a.php中使用curl发送相应的字段模拟登录,保存cookie文件,并输出请求到的内容,在b.php中使用a.php保存的cookie文件请求(不发送任何数据)并输出请求到的内容。

在本地的理论效果是,a.php中输出的内容是“已登录”,而b.php则应输出“admin”和cookie数组的内容:

a.php

b.php

但是这段代码在SAE上就无法实现效果,因为SAE不允许IO操作。下面给出两种方案解决这种问题!

第一种,使用kvdb服务,讲cookie信息从http头中提取出来,通过字符串的形式发送。

a.php

使用KVDB服务需要先开启,此部分建议看下官方文档,这里为了简便使用了Wrappers,建议使用原生的接口对kvdb进行操作!

b.php

第二种方法是,使用TmpFS服务,将cookie写入临时文件中,由于临时文件的生存周期等同于php请求,所以我们需要把临时文件的内容保存到KVDB中,然后在其他脚本使用时,再将cookie信息写入临时文件中供curl调用!

a.php

b.php

总结下:
第一种方法效率相对高些,但是通过正则匹配获得的cookie信息,有一定的准确性问题。
第二种方法效率要低不少,因为进行很多次的IO操作,但是保存了比较好的原生特性。

(以上对KVDB的操作都是用Wrappers的方式,大家可以考虑使用使用原生接口。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值