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

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

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

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

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

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

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

rbenv環境でRuby on Railsのアプリケーションを一瞬で自動生成

アプリケーション構築時に最初に行う手順 概要 アプリケーションを作成するまでの手順を記載しています。 rbenvなどの環境が設定済と仮定して話を進めま...

Rails devise・authority・rolifyで権限付きの認証機能

devise・authority・rolify 概要 3つのGemを使用して、権限付き認証機能を実装します。 gem インストール Gemfile ...

Rails devise で複数モデルの認証機能を実装

Rails devise で複数モデルを管理 概要 rails のログイン認証 Gem「devise」のインストール・設定方法を紹介します。 よく「d...
トップへ戻る