3

Web サイトで、ウィザードを実装したいと考えています。一連のフォームのように見えるはずです。

私の要件は次のとおりです。

  • ユーザーは、フォームの再送信を求めるプロンプトが表示されることなく (前後に移動する場合)、ブラウザの前後ボタンを使用できる必要があります。
  • ユーザーが前に入力したページを前後に移動した場合、フィールドはオートコンプリートされる必要があります
  • ユーザーが前の手順を完了せずにページにアクセスしようとすると、それに応じてリダイレクトされます (最後に要求されたページ)。
  • ユーザーは、フォームを離れて戻ってきた後、フォームの入力を再開できる必要があります。
  • 私のモデルでは、各ページは前のページに入力する必要がありました。また、各ページには独自の検証があります。
  • URLはきれいでなければなりません。
  • ウィザードは JavaScript なしで動作するはずです (必須ではありません)。

どのように実装しますか? (一連の http 投稿フォーム、http get フォーム、javascript 経由で送信するかどうか)


ヒント:

セッションのすべての情報を保存し、ウィザードの最後に情報をデータベースに保存し、現在のセッション情報を消去する予定です。このようにして、フィールドをオートコンプリートし、ウィザードの完了時にユーザーがどこにいるかを知ることができます。

私の主な懸念事項:

  • http投稿フォームを実装すると、ブラウザは各フォームを再送信するように求めます(そして、それを制御する方法がわかりません)
  • http GET フォームで実装すると、URL は情報で満たされ、非常に長くなる可能性があります。また、GET リクエストの手段ではありません。
  • 各フォームを javascript 経由で http ポスト経由で送信すると、プロンプトは表示されませんが、ウィザードは JavaScript では機能しません (おそらく解決策は、デフォルトのフォーム動作をオーバーライドして、JavaScript の有無にかかわらず機能するようにすることです)。
4

2 に答える 2

0

任意のデータ ストレージにセッションを使用することはお勧めしません。ログイン認証にセッションを使用することになった場合、それはすぐに混乱する傾向があり、セキュリティモデルも台無しになります。認証を設定データとは別にして、設定専用のテーブルを作成するか、javascript localStorage を使用してください。

あなたの場合、あなたが説明していることは、永続的なストレージの癖が追加された、複数のフォームセクションで表示/非表示機能を備えた1つの長いフォームのように聞こえます!

つまり、代わりにform1 > form2 > form3 > form4 > done

form_section_1 > validate, save data, and then display form_section_2 and hide form_section_1 > validate, save data, and then display form_section_3 and hide form_section_2 > etc > true form submit once

JavaScript を使用していないユーザーの場合は、いずれかのセクションの送信時に、すべてのセクションで php の情報を検証するだけです。極端な場合でも保存したい場合は、session_id で識別される情報を設定テーブルに保存できます。

このシナリオを簡単にするために、localStorage を使用してすべての検証ですべてのデータを保存し、javascript を使用して誤ってメイン フォームから離れるのを防ぎます。ie7 ( http://caniuse.com/#search=localStorage ) などをサポートすることで本当に生活を複雑にする必要がある場合は、localStorage を検出し、それが存在しない場合は、データを php スクリプトに渡します。単一のデータ コンテナ オブジェクトを作成し、すべてを json の単一のバンドルに変換して、セッション内の単一の変数に保存するか、データベースの設定テーブルに保存することをお勧めします。

于 2012-10-12T20:55:54.727 に答える
-1

PHPセッション変数を使用して、ウィザードの異なるページ間で入力されたデータを格納します。htmlフォームを使用すると、ブラウザの履歴に戻るとデータを再送信するように求められますが、これに対する修正はわかりません... PHPを使用すると変数の保存は簡単ですが、フォームを指定method=postしてコマンドを使用し$_REQUESTて取得します長いURLがを使用しないようにするためのPHPドキュメントの情報GET。頑張って、何か考えたら更新します。

于 2012-10-12T14:10:01.830 に答える