2012年8月23日木曜日

[PHP][cURL] cURLでクッキーを送受信する

PHPは特定のURLにアクセスしたりリクエストを送るのが非常に簡単だ。
とりわけcURLを使う方法は結構メジャーである。
cURLには通信のための様々なオプション設定ができるが、
クッキーを扱うためのオプションももちろんある。

相手からクッキーを受け取りたいときは

//URLを指定する
$url='www.google.co.jp';
//テンポラリファイルを作成する
$cookie=tempnam(sys_get_temp_dir(),'cookie_');

//cURLを初期化して使用可能にする
$curl=curl_init();

//オプションにURLを設定する
curl_setopt($curl,CURLOPT_URL,$url);
//クッキーを書き込むファイルを指定
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie);

//URLにアクセスし、結果を表示させる
curl_exec($curl);

//cURLのリソースを解放する
curl_close($curl);

//クッキーを表示する
echo file_get_contents($cookie);

//テンポラリファイルを削除
unlink($cookie);

となる。
ちなみにクッキーを受け取ったファイルの中身は

# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

ドメイン ドメインクッキーフラグ パス セキュアフラグ 有効期限 名前 値
ドメイン ドメインクッキーフラグ パス セキュアフラグ 有効期限 名前 値
ドメイン ドメインクッキーフラグ パス セキュアフラグ 有効期限 名前 値

となっている。
逆に相手にクッキーを送信したい場合は

//URLを指定する
$url='www.google.co.jp';
//クッキー情報の入ったファイルへのパス
$cookie='./cookie.txt';

//cURLを初期化して使用可能にする
$curl=curl_init();

//オプションにURLを設定する
curl_setopt($curl,CURLOPT_URL,$url);
//クッキーを読み込むファイルを指定
curl_setopt($curl,CURLOPT_COOKIEFILE,$cookie);

//URLにアクセスし、結果を表示させる
curl_exec($curl);

//cURLのリソースを解放する
curl_close($curl);

となる。
ちなみにpixivへの自動ログインを作るためには、
このクッキーの扱いをマスターするのが必須になってる。

ポイントとなる関数
  • curl_init ・・・ cURL セッションを初期化する
  • curl_setopt ・・・ cURL 転送用オプションを設定する
  • curl_exec ・・・ cURL セッションを実行する
  • curl_close ・・・ cURL セッションを閉じる

0 件のコメント:

コメントを投稿