Pear モジュールのHTTP_Client を使用することで、HTTP リクエストを処理することができます。
また、POST HTTP リクエストを送出できることを利用してログイン処理を行うこともできます。
今回は、このログインしたときのセッションを保持する方法について紹介します。
セッションを保持しておくには、HTTP_Client_CookieManager を使用します。
セッションを保持することで、次回からログイン処理を行う必要がなくなるため便利です。
サンプルコードはこちらです。
メソッド | 説明 |
---|---|
attach() | オブジェクトのイベントが通知されるリスナーのリストに Listener を追加します。 |
currentResponse() | 直近の HTTP レスポンスを返します。 |
detach() | リスナーのリストから Listener を削除します。 |
get() | GETのHTTP リクエストを送出します。 |
head() | HEADのHTTP リクエストを送出します。 |
post() | POSTのHTTP リクエストを送出します。 |
setDefaultHeader() | HTTP リクエストでのデフォルトヘッダをセットします。 |
setMaxRedirects() | 処理されるリダイレクトの最大数をセットします。 |
setRequestParameter() | HTTP リクエストでのパラメータをセットします。 |
getCookieManager() | HTTP_Client_CookieManagerクラスを取得します。 |
メソッド | 説明 |
---|---|
addCookie() | 明示的にリストにクッキーを追加します。 |
passCookies() | リクエストにクッキーを追加します。 |
reset() | クッキーのリストをクリアします。 |
updateCookies() | HTTP サーバのレスポンスからクッキーのリストを更新します。 |
詳しくは、こちらを参照ください。
require_once"HTTP/Client.php";
$client =& new HTTP_Client();
//ログイン処理
$login = "userid";
$password = "psss";
$login_params = array("login" => $login, "passwd" => $password);
$login_url = "https://login.yahoo.co.jp/config/login";
$client->post($login_url, $login_params);
//クッキーマネージャシをシリアライズ
$classCookieManager = $client->getCookieManager();
$classCookieManager->serializeSessionCookies(true);
$seriarize = serialize($classCookieManager);
//ファイルに保存
file_put_contents('cookie.dat', $seriarize);
HTTP_Client の post を使用して、ログイン処理を行っています。
その後、CookieManager を生成してシリアライズしたものをファイルに保存しています。
require_once"HTTP/Client.php";
$seriarize = file_get_contents('cookie.dat');
$client =& new HTTP_Client(null,null,unserialize($seriarize));
$client->get("http://auctions.yahoo.co.jp/");
$response = $client->currentResponse();
print_r($response);
1回目の処理でファイルに保存したデータをアンシリアライズして読み込みます。
すでにログインが終了しているので、直接ログイン必要画面へ遷移しています。
そして、currentResponse を使用して、アクセスしたページの内容を取得し、表示しています。