用curl检索cookie的响应

时间:2013-02-06 11:13:49

标签: php

我正在尝试检查具有特定网址的服务器上是否存在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;

问题是当我登录到目标站点时,我需要检查我是否登录到站点,所以我尝试从站点检索cookie。但是我失败了。 我想使用curlopt_cookie选项..但我想如果有一种简单的方法可以从服务器返回cookie并检查它是否存在。

简而言之,当我浏览页面时,cookie就存在了。但是当请求回来并打印时它不存在

1 个答案:

答案 0 :(得分:1)

似乎目标主机不可用。可能是网址中的拼写错误,或者它确实无法使用。我添加了以下选项来卷曲:

curl_setopt($ch, CURLOPT_VERBOSE, 1);

现在我可以看到以下错误:

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

更新:在修复了网址中的拼写错误之后,我得到了以下示例:

<?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);