CURL是一个非常实用的PHP扩展,模拟用户登录时经常需要存取COOKIE信息,而使用COOKIEJAR和COOKIEFILE会产生两次或两次以上的I/O操作,性能效率自不必说,在第三方云应用平台(BAE SAE等),有时还需要操作STORAGE来实现存取COOKIE,比较麻烦,今天介绍一个CURL不使用文件存取COOKIE的方法:
COOKIEJAR/COOKIEFILE方式:
代码如下 | 复制代码 |
/*-----保存COOKIE-----*/ $url = 'www.111cn.net'; //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 curl_exec($ch); //执行curl curl_close($ch); //关闭curl /*-----使用COOKIE-----*/ |
新方式(无I/O操作):
代码如下 | 复制代码 |
/*-----保存COOKIE-----*/ $url = 'www.111cn.net'; //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-----*/ /*-----保存COOKIE-----*/ /*-----使用COOKIE-----*/ |