人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでWebサービスを開発する際、複数ページにまたがったウィザード処理などの画面遷移で進んだり戻ったりするときに、フォームのデータをどのように保持するかで悩んでいます。

複数ページにまたがった画面遷移のデータ保持などの処理を効率的にするには、どのようなやり方があるのでしょうか。
開発の方針、こんなライブラリがあるなど、どのようなものでも構いません。
よろしくお願いします。

●質問者: takets
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP Webサービス ウィザード データ ライブラリ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● tadashi0805
●30ポイント

PHPのセッション管理を使うのが、一番楽だと思います。

http://php.oss.eznetsols.org/manual/ja/ref.session.php

これを使えば、ブラウザのウィンドウが開いている間の遷移内で、かなり大きなデータも扱うことができます。

遷移する各ページ内で、session_start()という関数を読んで、セッション用のデータ領域に情報を格納しておくことで、各ページでそのセッション情報を読み出したり更新したりできます。

◎質問者からの返答

ありがとうございます。

確かにセッションは簡単でいいのですが、セッションの設定によっては一定時間しかデータを保持できない可能性がでてきてしまいます。

symfonyというPHP5のフレームワークも確かセッションでデータの受け渡しをしていた気がしますが、ページ遷移でのデータのやりとりはセッションが主流なのでしょうか。ページ移動するまでデータを保持し続ける方法はないものでしょうか。


2 ● PEPOTA
●30ポイント

sessionがアレなら、Cookieかなと思います。

Cookieもアレなら、自作でsessionっぽい物をデータベースと絡ませて…な方法になるかもです。

仰るとおり、フレームワークの種類によっては、色んな手法が試されていると思うので、フレームワークを探ってみるのも手かもしれませんね。

◎質問者からの返答

ありがとうございます。

クッキーはセキュリティに問題がありそうですが、使いどころによっては抜け道になりそうですね。


3 ● tadashi0805
●30ポイント

通常は、セッションの保持時間を超えて長い時間画面が放置されるような状況では、保持する必要はない(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画面中に無理やり出力するなどの手法も可能です。

◎質問者からの返答

ありがとうございます。

実運用上のことを考えると、セッションが最適解みたいですね。


4 ● えるふん
●30ポイント

個人的には昔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はデザインに融通が利かないと聞いたことがあるのですが、一度使ってみます。


5 ● Yota
●30ポイント

sessionかcookieかという話題になっていますね。

cookieはユーザがそのサイトにクッキーを許可してなければ、php.iniにsession.use_cookies=1としても、渡せないのでsessionにせざるを得ない場合もありますよね。確かにクッキーはブラウザを閉じない限り保持されるし、さらに何ヶ月もユーザのコンピュータに保存させることもできるから便利です。ただ、わたし個人はyahooなどの超有名サイトでcookieを使えるときわめて便利でないとこ以外は、cookieは受け入れません。上の人もいっているように、何時間も触らずに放置しておいてsessionなくなってこまった、ということは実際起こりにくいと思います。

話は変わりますが、PEARライブラリにHTML_QuickForm_Controllerというのがあって、複数フォームをウィザード形式でつくれます。

参考サイト

http://www.okushin.co.jp/information/tanuki08/index.php

◎質問者からの返答

ありがとうございます。

回答をまとめると、

1.セッション

2.QuickForm_Controller

のどちらがいいのか、簡単にテストしてみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ