HTTP_Clientでクッキーを操る

Written by uechoco 6月 27
この記事を読む時間:23くらい

今日はHTML_QuickFormに引き続き、HTTP_Clientにも悩まされる日だった。

やりたいことはHTTP_Clientでクッキーを操作すること。HTTP_Client自体はHTTP_Requestのラッパーなので、クッキーを扱うことができるし、HTTP_Client_CookieManagerなるクラスもエンドユーザー・ドキュメントには記載されているので、簡単にできると思っていたが、使い方がわからないし、クッキーの取得の仕方がわからない。

仕方なく、HTTP/Client.phpを直に見て、探ってみると、エンドユーザー・ドキュメントにはないものがいくつかあった。隠さずに表に出してくれよ・・・

まず1つ目は、HTTP_Clientクラスのコンストラクタには第3引数が指定でき、それはHTTP_Client_CookieManagerであるということ。これによって、自前で用意したHTTP_Client_CookieManagerクラスを使いまわすことができる。詳しく言うと、一度保存したHTTP_Client_CookieManagerクラスをもう一度ここに代入することでクッキーを再現できるということ(だと思う)。

そして、2つ目は、HTTP_Clientクラスには内部で保持しているHTTP_Client_CookieManagerを出力するためのgetCookieManager()メソッドが用意されているということ。phpDocumentorのマニュアルには載っていたが、エンドユーザー・ドキュメントにはどこにも載っていない。これで、HTTPアクセスのときに使用したクッキーを保存することができる。

この2つをあわせれば、HTTP_Clientでクッキーを再現できる(と思うのだが・・・)。

それにしても・・・この手の日本語の資料は全くと言っていいほどないですね。みんな使わないのかな・・・

HTML_QuickFormのハマりどころ

Written by uechoco 6月 27
HTML_QuickFormのハマりどころ はコメントを受け付けていません。
この記事を読む時間:54くらい

 今日HTML_QuickFormを使って、ハマったところ・・・

‘hidden’タイプの要素は、後から値を上書きすることができないらしい。

 簡単に状況を説明すると、’hidden1’という名前の’hidden’要素をHTML_QuickFormに追加した状態で、

  1. $elem =& $quickform->getElement('hidden1');<br />
  2. $elem->setValue('updated');

 のようなプログラムを後からかましても、変わってくれないという罠。
結局、一時的な改善策は、’hidden’要素だけは、代入する値が存在するときに随時作るってことか。

 「いまさらHTMl_QuickFormかよっっ」てツッコミはなしでお願いします(汗

いまさらながらphpマニュアルを見直してみる

Written by uechoco 6月 23
いまさらながらphpマニュアルを見直してみる はコメントを受け付けていません。
この記事を読む時間:28くらい

久しぶりにphpマニュアルを見回してみると、初めのほうの項を見たことないなぁとか気づく。
いくつか目に付いた項目をピックアップしてみた。

PHP: ファイルシステムのセキュリティ – Manual
http://www.php.net/manual/ja/security.filesystem.php

普通のセキュリティ対策のやつだけど、こんなのも丁寧に書いてくれるのかっと、ちょっと感心。気づくの遅い?

PHP: PHPの隠蔽 – Manual
http://www.php.net/manual/ja/security.hiding.php

確かに隠匿する方法としてはまぁ、ありだけど、編集のときに.phpじゃないと不便なことが多々あるでしょ・・・

PHP: XFormsの処理 – Manual
http://www.php.net/manual/ja/features.xforms.php

こんなのまで載ってたのかw 対応してるブラウザってあったっけ?

PHP: PHP の歴史と関連するプロジェクト – Manual
http://www.php.net/manual/ja/history.php

これは最後の付録のほう。phpの歴史を知っとくのもphperの義務でしょうかね。

PHP: 関数エイリアスのリスト – Manual
http://www.php.net/manual/ja/aliases.php

結構エイリアスってあるもんだといまさら気づく。 ってか、リストの最初に載ってる’_’って関数はなんだww

PHP: PHP 型の比較表 – Manual
http://www.php.net/manual/ja/types.comparisons.php

この比較表は、いつか使うときが来るかもしれないな。でも、変数の中身が紛らわしくなるプログラムを書かなければ見なくてもいいのかな。

Dreamweaver with Subversion

Written by uechoco 6月 20
Dreamweaver with Subversion はコメントを受け付けていません。
この記事を読む時間:247くらい

Dreamweaverでphpやhtmlを編集している人は少なくはないと思うが、その中にはSubversionと併用している方もいるはずだ。Dreamweaverでは(私の環境では)「.svn」フォルダを表示してくれないが、フォルダをアップロードすると、勝手に「.svn」フォルダまでアップロードしてしまうことが多々ある。サイト全体のアップロードを実行しておいて、ご飯を食べ終えて帰ってきてもまだ終わってなくて、「しまったっ!Subversionがぁっ!」と頭を抱えたことがある方もきっといるはずだ。

そんなときは、Cloak/Uncloak SCM Directoriesというプラグインを試してみてはいかがだろうか?このCloak/Uncloak SCMは、1クリックで、現在のサイト内のすべての「.svn」フォルダをクローク、もしくはクローク解除してくれるスグレものだ。CVSにも対応してる。
インストール方法は、ダウンロードしたプラグインをダブルクリックすることで、勝手にインストールが始まるので、指示に従えばよい。
また、使い方は、「コマンド」メニューに「Cloak SCM」「Uncloak SCM」というサブメニューが追加されているので、どちらか実行するほうを選択すればよい。実行中は何もメッセージが出ず、砂時計の待機中が続くが、実行が完了すると、何個のディレクトリをクローク/クローク解除したのかを表示してくれる。
なお、このプラグイン自体はDreamweaver MXの対応であるが、Dreamweaver 8でも使えるのは確認済みである。

私は少し前から愛用していたのだが、どうも直リンクが検索にひっかからず、紹介するためのURLがわからなかったのだが、ようやく見つけることができた。リンク先は動的ページなので、URLが変更される可能性もあるので、注意して欲しい。このURLは2007年6月20日現在で有効なものである。

Cloak/Uncloak SCM Directories, V2.0
http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&loc=en_us&extid=1018603

Adobe – Adobe Exchange beta
http://www.adobe.com/cfusion/exchange/
(Exchangeから手で探す場合は、DreamweaverのProductivityカテゴリ内で、11/01/04という日付を目印にするとよい。)

文字の類似性を見積もる、levenshtein関数

Written by uechoco 6月 15
文字の類似性を見積もる、levenshtein関数 はコメントを受け付けていません。
この記事を読む時間:19くらい

最近、phpのマニュアルを眺めていたら、面白い関数を見つけた。levenshtein関数、レーベンシュタインと読む。
どうやら、文字列の類似性を見積もる系統の関数で、文字列Aから文字をとったり入れたりして文字列Bにするのに何手かかるかを計算するようだ。オーダーはO(m*n)と、意外と少ない。主な使用法としては、入力された単語が完全にマッチしなかった場合は「もしかして、xxxx?」と、候補をこちらから提示してあげることができるようになる。
ちなみにsimilar_textという文字列の類似性を調べる関数が存在するが、そちらのオーダーはO(max(n,m)^3)と、とんでもない大きさだ。

phpマニュアルのほうにも簡単なサンプルが載っているし、下記にいくつかのリンクを載せておいたので、参考にして欲しい。

PHP: levenshtein – Manual
Do You PHP はてな – levenshtein関数
zuzara : 類似文字列マッチの実装例 今度はPHPのlevenshtein関数