1

私は多くのフィールドを持つ私のページにフォームを持っています。ユーザーが値を入力すると(フォームの送信を待たずに)データストアにフィールド値を保存します。いくつかのスコアはフィールド値に基づいて計算され、ユーザーに表示されます。私はまた、ユーザーのクライアントIDを生成し、それをユーザーのクッキーに1時間保存します。ページの更新を正しく処理するにはどうすればよいですか?

私は、ユーザーがブラウザでページをリフレッシュしたときに何が起こるかわからない:

  1. ユーザーがFFでF5を押した場合、そのフィールドの値は、まだブラウザに表示されます。
  2. ユーザーがCtrl + F5を押すと、値がクリアされます。

どちらの場合も、このユーザーの新しいレコードを作成したくないので、クライアントIDは同じにしてください。しかし、シナリオ(1)では、データストア内のフィールド値とそのスコアをクリアするべきではありませんが、シナリオ(2)で行う必要があります。それをサーバー側でどのように認識できますか?

+0

なぜクライアントIDクライアント側を作成していますか? –

+0

@ShayErlichmen、それはサーバー側で作成されます。 –

答えて

0

説明した2つのシナリオは、ブラウザに組み込まれている動作です。データが送信されたページでF5キーを押すと、ほとんどのブラウザーはフォームデータを再送信しようとします。これは、平均的なユーザーがデータを失わないようにするためです。

サイトに入力したように、フォームに記入してもう一度送信をクリックします。

このデータを再度処理しないようにするには、ランダムキーを生成して非表示のフォームフィールドに格納します。データが送信されたら、このキーをセッション変数に保存します。データが再送信された場合は、フォームデータのランダムキーとセッションのランダムキーを比較するポストバックの周りにチェックを入れることができます。それらが同じ場合、データは既に処理されています。

0

ユーザーが登録ページを入力してデータベースに格納するときに、SESSION IDを作成します。セッションIDは、ユーザーがブラウザを閉じるときにのみ変更されると思います。

ユーザーがページを更新するとセッションIDのデータベースから値をretrive。

ユーザーが[送信]ボタンをクリックし、データベースに値を正常に照会すると、セッションIDは、フォームフィールドをリセットし破壊する...あなたはページをロード

0

最良の方法は、すでにDBに保存された各フォームフィールドのいずれかの内容があった場合、あなたはそれを確認する必要がありそうでない場合は、いくつかのクライアント側のフォームフィールドのキャッシュを試してみてください技術。

+0

データストアに保存する場合はどうすればよいですか?フィールドでそれを表示しますか? (実際には〜150フィールドあります) –

関連する問題