複数ページにまたがった画面遷移のデータ保持などの処理を効率的にするには、どのようなやり方があるのでしょうか。
開発の方針、こんなライブラリがあるなど、どのようなものでも構いません。
よろしくお願いします。
PHPのセッション管理を使うのが、一番楽だと思います。
http://php.oss.eznetsols.org/manual/ja/ref.session.php
これを使えば、ブラウザのウィンドウが開いている間の遷移内で、かなり大きなデータも扱うことができます。
遷移する各ページ内で、session_start()という関数を読んで、セッション用のデータ領域に情報を格納しておくことで、各ページでそのセッション情報を読み出したり更新したりできます。
通常は、セッションの保持時間を超えて長い時間画面が放置されるような状況では、保持する必要はない(expireしてしまう)というのが、通常の運用だと思います。
一応、session_cache_expire()によって、分単位でexpire時間を設定できます(デフォルト値が180=3時間)ので、expire時間を長く取る必要があるページは、個別により大きな値(例えば丸1日なら60*24=1440だし、もっと大きな値もとれます)を設定しておけば、実運用上ほとんど問題にはならないと思います。
http://php.oss.eznetsols.org/manual/ja/function.session-cache-ex...
確実に無制限にしたいのなら、少ない情報ならexpire時間なしにしたCookieか、情報量が多ければ、フォームを設けてinputタグでtype="hidden"の値のところに動的に展開して、HTML画面中に無理やり出力するなどの手法も可能です。
ありがとうございます。
実運用上のことを考えると、セッションが最適解みたいですね。
個人的には昔HTML_QuickForm_Controllerを使っていました
今はそれに近いライブラリを作ったのでたまにそれを使っています.
http://pear.php.net/manual/ja/package.html.html-quickform-contro...
以前このパッケージの執筆をしたのでご興味があれば下記を参考にしてください
http://www.amazon.co.jp/gp/product/4844320254/
http://wiki.poyo.jp/read/Writing/marugoto_php/HTML_QuickForm_Con...
ありがとうございます。
QuickForm_Controllerは考えていたことに近いことができそうです。
QuickFormはデザインに融通が利かないと聞いたことがあるのですが、一度使ってみます。
sessionかcookieかという話題になっていますね。
cookieはユーザがそのサイトにクッキーを許可してなければ、php.iniにsession.use_cookies=1としても、渡せないのでsessionにせざるを得ない場合もありますよね。確かにクッキーはブラウザを閉じない限り保持されるし、さらに何ヶ月もユーザのコンピュータに保存させることもできるから便利です。ただ、わたし個人はyahooなどの超有名サイトでcookieを使えるときわめて便利でないとこ以外は、cookieは受け入れません。上の人もいっているように、何時間も触らずに放置しておいてsessionなくなってこまった、ということは実際起こりにくいと思います。
話は変わりますが、PEARライブラリにHTML_QuickForm_Controllerというのがあって、複数フォームをウィザード形式でつくれます。
参考サイト
ありがとうございます。
回答をまとめると、
1.セッション
2.QuickForm_Controller
のどちらがいいのか、簡単にテストしてみます。
ありがとうございます。
確かにセッションは簡単でいいのですが、セッションの設定によっては一定時間しかデータを保持できない可能性がでてきてしまいます。
symfonyというPHP5のフレームワークも確かセッションでデータの受け渡しをしていた気がしますが、ページ遷移でのデータのやりとりはセッションが主流なのでしょうか。ページ移動するまでデータを保持し続ける方法はないものでしょうか。