1

我正在尝试检查具有特定 url 的服务器上是否存在 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 就存在。但是当请求返回并且我打印它时它不存在

4

1 回答 1

1

似乎目标主机不可用。可能是 url 中的拼写错误,或者它真的不可用。我在 curl 中添加了以下选项:

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);
于 2013-02-06T11:18:33.970 回答