1. 程式人生 > >[樂意黎轉載]PHP Curl 不依賴 CookieJar 獲取 Cookie 的方式

[樂意黎轉載]PHP Curl 不依賴 CookieJar 獲取 Cookie 的方式

curl 是 php 中非常好的一個工具類,它預設獲取 cookie 的方式是這樣的。

// 將cookie儲存至cookie.txt 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 

將 cookie 儲存到一個檔案中其實並不是一種很好的方式,其一,cookie 的儲存與讀取這是兩次 IO 操作,小程度上降低了程式執行效率。其二,cookie 檔案的存放路徑,尤其是當使用 MVC 框架的時候,cookie 檔案儲存在哪個路徑,不太容易處理。
其實,我們可以通過 curl 獲取 URL 的 header 資訊,從 header 中分割出 cookie 部分,再利用正則將 cookie 取出來。
上程式碼:

// 初始化CURL 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
// 獲取頭部資訊 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$content = curl_exec($ch);  
curl_close($ch); 
// 解析http資料流 
list($header, $body) = explode("\r\n\r\n", $content); 
// 解析cookie
preg_match("/set\-cookie:([^\r\n]*)/i"
, $header, $matches); $cookie = $matches[1];

然後接下來需要提交 cookie 時,使用下面的語句提交就可以了。

curl_setopt($ch, CURLOPT_COOKIE, $cookie);https://muguang.me/php/phpcurl-cookie.html