本文章來給大家介紹php CURL不使用文件存取COOKIE一個實例,希望此方示對各位同學會有所幫助哦。
CURL是一個非常實用的PHP擴展,模擬用戶登錄時經常需要存取COOKIE信息,而使用COOKIEJAR和COOKIEFILE會產生兩次或兩次以上的I/O操作,性能效率自不必說,在第三方雲應用平台(BAE SAE等),有時還需要操作STORAGE來實現存取COOKIE,比較麻煩,今天介紹一個CURL不使用文件存取COOKIE的方法:
COOKIEJAR/COOKIEFILE方式:
/*-----保存COOKIE-----*/
$url = 'www.bKjia.c0m'; //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-----*/
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie);
新方式(無I/O操作):
代碼如下 復制代碼
/*-----保存COOKIE-----*/
$url = 'www.bKjia.c0m'; //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);
/*-----保存COOKIE-----*/
$url = 'www.bKjia.c0m'; //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);