PHP PEAR::HTTP_Clientでログインセッションを保持

2013/07/10

PHP HTTP_Client でセッションを保持する方法について

概要

Pear モジュールのHTTP_Client を使用することで、HTTP リクエストを処理することができます。
また、POST HTTP リクエストを送出できることを利用してログイン処理を行うこともできます。

今回は、このログインしたときのセッションを保持する方法について紹介します。
セッションを保持しておくには、HTTP_Client_CookieManager を使用します。
セッションを保持することで、次回からログイン処理を行う必要がなくなるため便利です。

サンプルコードはこちらです。

Perl でのログイン、セッション保持の方法はこちら

HTTP_Client クラスの各メソッド紹介

メソッド 説明
attach() オブジェクトのイベントが通知されるリスナーのリストに Listener を追加します。
currentResponse() 直近の HTTP レスポンスを返します。
detach() リスナーのリストから Listener を削除します。
get() GETのHTTP リクエストを送出します。
head() HEADのHTTP リクエストを送出します。
post() POSTのHTTP リクエストを送出します。
setDefaultHeader() HTTP リクエストでのデフォルトヘッダをセットします。
setMaxRedirects() 処理されるリダイレクトの最大数をセットします。
setRequestParameter() HTTP リクエストでのパラメータをセットします。
getCookieManager() HTTP_Client_CookieManagerクラスを取得します。

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 を生成してシリアライズしたものをファイルに保存しています。

2回目の処理


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 を使用して、アクセスしたページの内容を取得し、表示しています。

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る