我正在尝试检查具有特定网址的服务器上是否存在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就存在了。但是当请求回来并打印时它不存在
答案 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);