HTML_QuickForm2を読む

2007/07/17 | HTML_QuickForm2

PHP4にさよならを言わなくてはならなくなった今、本格的にPHP5に取り組まなくてはいけなくなった。いちおうcakePHPで開発をすすめていく予定にしている。cakePHP曰く「他のライブラリを一切必要としない」という高尚な思想はすばらしいとは思うが、それはイコール「cakePHPにないことは自前でどうぞ」ということだ。私は自前でプログラムを書くのは大嫌い!。
データベース関連はcakePHPで用意されているものを使うとして、そのほかの要素はやっぱりPEARで処理したい(ページングを実現するライブラリがないようで、decorate.phpに少しあるくらいだから、DBも要検討だが)。まずはHTML_QuickForm2を読んでみることにした。自分にとってのウェブプログラミングの3大要素は「データベース」「フォーム」「認証」なので、一つずつクリアしていきたい。認証はPEARのAuthかLiveUser。LiveUserはいろいろ出来るようだが、一度も使ったことがないので、多分Authから始める。

HTML_QuickForm2。読もうと試みたけど、見たことがないのがいろいろ出てくる。必要に駆られてPHP5も多少覗いてはいたのだが・・・理解に苦しむ記述が・・・(っていうかimplementsって何?)。
HTML_QuickForm2自体はそれほど難しくなさそうな感じだ。pear.php.netで紹介されているとおり、HTML_QuickFormをPHP5用に書き直しただけ、という印象だ。見たことのある関数がそこかしこにある。
オブジェクトの生成も、

$myForm=& new HTML_QuickForm2(‘myForm’);

みたいな感じでいけそう(未検証)。少し安心した。
まずはPHP5の環境を用意して諸々テストしていくとしよう。

無料レンタルメールフォームサービス開始

2007/07/16 | その他

レンタルアンケートサービス「CubeQuery」はわりと順調に利用者が増えている。簡単だし、無料だし、グラフで集計結果が見れるし・・・。普通にアンケートをとるには十分な機能を備えているので、結構おすすめなサービスだ。

http://www.cubequery.jp

せっかく作ったフォーム作成の枠組みなので、ついでにメールフォームも作れるようにしてみた。作成可能な書式はアンケートと同じで、フリーアンサー(一行、複数行、メールアドレス書式チェック、数字書式チェック、英数字書式チェック)、シングルアンサー、マルチアンサー、必須チェックが利用可能。データはサーバ側で蓄積せず、逐一登録されたメールアドレスに送信する。
以下のURLから作成可能。

http://form.cubequery.jp

当面はPCのみ対応で、携帯対応は後日。よかったら試してください。

さようならPHP4 来年でメンテ終了

2007/07/15 | PHPの基本

このところ自分にとってはPHPのニュースが盛りだくさんだ(しかも悪い話ばかり)。
PHP4は今年いっぱいで新しいリリースが出なくなるとのことだ。それはまぁいい。それよりも2008年8月8日以降はPHP4の全てのアップデート(セキュリティ・バグ・フィックス)がされなくなるらしい。2008/08/08。単にごろをあわせただけのような日付というのがまた腹立たしい。

ということでPHP4はもうNGなわけだ。日本国内にはPHP5がOKなサーバがこんなに少ないのに!。

cakePHPか、とも思うが、まだまだバリデーション機能が不十分(1.2から少しよくなるらしい)。不十分といってもしばらくこれでしのぐしかないのか。ん〜〜。
Ethnaを少しだけみたけど、これはコマンドラインから操作が出来ないと駄目?。もっと簡単にできるフレームワークは?。mojaviはもうダメ?。Xoopsはどうなる?。

不満だらけだ。
まぁ、現行でPHP4で運営しているレンタルサーバは、途中でやめるわけにはいかないだろうから、今後もそれなりに何らかのサポートが入るだろう。業務面もあるので、今年の9月いっぱいまではPHP4で開発、それ以降はPHP5を採用。

それでなくても悩み事が多いのに・・・。

モジュールの公開範囲内でのアクセス権限設定

2007/07/11 | XOOPS

Xoopsには標準でモジュールへのアクセス権限設定機能が用意されている。複雑でないアクセス権限(例えば管理機能と公開機能に単純に分けられるような)であれば、この機能で十分まかなえる。これはモジュールを作成する際のお作法として、管理者機能はadminというサブディレクトリ内にファイルを配置すればよいからだ(つまりadminディレクトリ内かどうかで判断しているだけだ・・・多分)。
上記以外の権限チェック、つまり管理者かどうかというチェックではなく、例えば登録ユーザか否かのようなチェックや、あらかじめ許可されたグループに登録されたユーザか否か、というようなチェックが必要な場合は、スクリプト毎にアクセス権のチェックをしてやる必要がある。
地道にデータベースにSQLを発行してチェックしてもいいわけだが、諸々用意されているものを使うほうが簡単でいい。ここではその便利な方法を、既存モジュールから列挙してみた(既存モジュールの「フォーラム」を参照した)。

bool $xoopsUser->isAdmin($xoopsModule->mid())

$xoopsModule->mid()はモジュール管理番号を返し、それを引数としている$xoospUser->isAdmin()はアクセスしてきたユーザが、当該番号のモジュールに対して管理者権限をもっているかどうか、をチェックしてくれる。

bool check_priv_forum_auth($xoopsUser->uid(), $_POST[‘forum’], true)
bool is_moderator($forum, $xoopsUser->uid())

上記はそれぞれ専用の関数を用意し、それらの関数内ではデータベースに対してSQLを発行しているようだ。

つまり結局アクセス権のチェックは以下の二つの関数、モジュールの一般設定で設定する$xoopsModuleConfig(設定されていれば)、およびとデータベースへのSQLの発行などでチェックするということになりそうだ。
$xoopsModule->mid()
$xoospUser->isAdmin()

XoopsといえどもプログラムはPHPだから難しいわけではない。基本的にXoopsのお作法に則ったアクセス権の管理さえ出来れば、モジュールを作成するのは何も難しいことはない、ということになる。

ここまでくればハックが必要なモジュール(白扇など)をのぞけば大抵の機能を作ることが出来るようになるだろう。

HTML_QuickForm suspended

2007/07/10 | HTML_QuickForm

とうとうHTML_QuickFormのメンテナンスが終了してしまった(正確に言うと追加開発が終わっただけでバグフィックスは継続しておこなわれる模様)。
DBパッケージと同様に、代替モジュールの利用を促すメッセージがpear.php.netに記述されている。
まぁ、当然といえば当然だ。PHP5で使うと、エラーが頻発するような現状で、老い先短いだろうということはよくわかっていたから。しかしひどいのは、代替モジュールである「HTML_QuickForm2」は、まだアルファ版(バージョン0.1.0)ということだ。「アルファ版を原稿バージョンの代わりに使え」というタコなメッセージには閉口してしまう・・・。

HTML_QuickForm2は、HTML_QuickFormをPHP5で使用した際にエラーが頻発したのを解決するために書き直されたパッケージである、とのこと。ちなみにドキュメントはまだまだ・・・エンドユーザ向けのドキュメントはまだ提供されていない。
APIドキュメントを少し確認してみたところ、ちょっと気になっていた「ファイル操作」の部分はまだ残っているようだ。HTML_QuickFormでは「将来的になくなるかも・・・」ということだったので、どうなることかと思っていたが、どうも引き継がれていくようだ。

ドキュメントが充実して、ベータ版でも出ない限りは、当面HTML_QuickForm2を使うことはないだろうけど、注目しておく必要があるパッケージであることには間違いない。このパッケージが正式リリースされたら、PHP5への乗換え時だ、と思う(個人的に)。

しかしこの先、新しい仕様が出てくるような気がする。現状ブラウザからはフォームからデータを送信して、フォーム専用の受け口(プログラム)を用意するわけだが、そのうち全てXML-RPCだけで全てまかなえそうな気もしてしまうのだ(もしくはSOAPでもいい)。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net