処理の流れ

バイト先、今日は忙しかったらしいが私は横で昼寝してました・・。
もちろん休憩にしてるので時給は入らないが、それでも凄い環境だなぁーと我ながら思う。



昨日のコメントに対して、長くなるのでこっちに。

> 確認画面で自分の入力した項目確認 → (データ反映)→ 完了画面

ご存知だとは思うのですが、
この間でも入力チェックは行われてますよね。
というよりはあらゆる処理は、登録・確認・実行なんて流れではなくて、
いきなり実行でも問題がないようになっていなければいけません。
いきなりPOSTするHTTPクライントは簡単に作れますからね。

で、これを回避するのにトークンやらReferer入れれば、
開発者の意図通り制御できるんだ!なんていう人もいるかもしれませんが、
どんなに頑張ってもこれらも簡単にHTTPクライアントで突破できます。

そう言われてみればそうでした。
サーバ管理してる関係上(全然タイトルに合ってない日記だけど)、telnetでウェブやメールを見ることが時々ある。

例えばPOSTリクエストならtelnetで80に繋いで

POST /example.php HTTP/1.1
Host: example.com
Content-Length: 17

exec=search&q=php

などと打つのみ。(うろ覚え

そういやIEのクッキーが見にくいからって、クッキーまでtelnetでやり取りしてたこともあったな・・。
Mozilla使えば解決なんだけども。
蛇足が長くなった。。


で、よくよく考えたら前のプログラムではチェック用の関数をページ遷移の途中で2,3回呼び出してました。
セッションに値を保存する場合でも「データ登録前の確認画面ではhiddenでデータを設定するべき」ということなので、POST変数から少なくとも2度以上チェックしないと駄目ですね。


細かく書くと

  • フォーム1表示
    • フォーム1の入力チェック
  • フォーム2表示
    • フォーム1と2の入力チェック
  • 確認画面表示
    • フォーム1と2の入力チェック
  • 送信完了画面表示


ってなりますね。
ここで昨日URLをメモったMapleのValidation問題に行き着くわけですね・・。

色々考えてたらViewが複雑になりそう。。


フレームワークって基本的に面倒臭いものだと思いますよ。
フレームワークじゃないけど、わりと評判のいいHTML_QuickFormですら、
いざ本格的に使い出すと、全然便利じゃないですから。

使うのは面倒だし、面倒じゃないものを作ろうなんていうのはもっと大変。
だから、お手製じゃなくてみんなで作ったほうが絶対いいんだと思います。

HTML_QuickFormは触ってみて諦めました・・。
PHPでタグを生成するのは何となく嫌なものでせめてhiddenのみがいいなぁーとか、あと
「この検索フォームをこっちでも使いたいんやけどどうしたらええん?」
「フォームタグそのままコピーでいけますよー。」
的な会話が時々あるんですが、フォームのvalueとか(hiddenでアクションに対するキーを指定する場合など)をPHPで設定する場合では気軽にHTMLを書き換えられないって思うんですがどうなんでしょう。(ちゃんと調べたわけではないです・・

使うために調べるなら作ってしまえ!って思ってしまうので直さないと駄目ですね。。
PEARのDBやPagerのようなものも自分で作ってて、最近やっとADOdbやPagerを使い始めたところです・・。


既存フレームワークの自分に合わないところは

っていうのがあるので自分で作っちゃおうってなりますね・・。
いくつか勘違いしている項目があるかも。
ゼロから作るよりも改造した方が早いんでしょうけど、作れるときに作っておかないとって感じでしょうか。


それはそうとみんなSmarty
簡単なループネスト機能くらいが付いた組み込みテンプレート入りフレームワークって需要ないんかな。
私はあちこちから取ってくるのが嫌だから全部組み込んでてほしい。
選べる自由も欲しいけど、デフォルトは何も無しで動くのが基本っていうのがいい。

Ethnaは調査不足・・時間が。。




新たな問題、というか疑問が。
チェーンの転送が無限ループになったりしないんだろうか。
ぁ、たしかスタックか配列かに詰め込んでたから一度設定されたものは実行されないのか。
書きながら疑問解決した。