2013-02-06 41 views
1

我正在嘗試檢查具有特定網址的服務器上是否存在cookie。使用curl檢索帶有cookie的回覆

$ch=curl_init(); 
//curl_setopt ($ch, CURLOPT_COOKIE, "mm=38533;"); 
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_COOKIEFILE,'/tmp/cookies.txt'); 
curl_setopt($ch,CURLOPT_URL,'http://www.engageya.com'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
$response=curl_exec($ch); 
// get cookie 
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $response, $m); 

curl_close($ch); 

var_dump(parse_url($m[1])); 
echo "<br/>".$response; 

問題是,當我登錄到目標網站,我需要檢查,如果我登錄到該網站,所以我試圖找回從site..But我失敗的cookie。 我以爲使用curlopt_cookie選項..但我想如果有一種簡單的方法從服務器返回cookie並檢查它是否存在。

總之,當我衝浪到頁面時,cookie就存在。但它不存在請求回來時,我打印它

+1

Cookie不在服務器上。他們住在客戶端。 –

回答

1

似乎目標主機不可用。也許在網址中輸入錯誤或者它確實不可用。我增加了以下選項捲曲:

curl_setopt($ch, CURLOPT_VERBOSE, 1); 

現在我可以看到以下錯誤:

* getaddrinfo(3) failed for www.engagya.com:80 
* Couldn't resolve host 'www.engagya.com' 

更新:url中固定的錯字後,我得到了下面的示例工作:

<?php 

$ch=curl_init(); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_URL,'http://www.engageya.com/wordpress/api/?action=isloggedin&uid=22472'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
$response=curl_exec($ch); 
curl_close($ch); 

// use preg_match to get the cookie as in your question: 
preg_match('/^Set-Cookie:\s*([^;]*);/mi', $response, $m); 
var_dump($m); 
+0

我沒有顯示任何錯誤..我專門打亂網站.. – BlackFire27

+0

好的,我們會看到。一步步。 :) – hek2mgl

+0

問題是標題不幫助,因爲cookie設置了一次..我需要查看如果cookie存在於服務器上。它每次都會設置一個cookie。但我不想得到一個cookie設置的響應。我想檢查預先存在的Cookie ..檢查可能是服務器上的cookie,如果它保存在那裏。 – BlackFire27