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_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 に答える