投票サイトでは、ユーザーは(ログインしていない)質問に1回しか投票できません。ユーザーが特定の質問に既に回答していることをWebアプリが「覚えている」のはどうですか?ウェブアプリケーションで複数の値を「記憶」するための最良の方法
1つの方法は、回答するすべての質問に対してCookieを設定することです。セッション中に質問IDを保存する別の方法です。セッションIDとともに、dbに値を格納することもできます。
他の方法がありますか?
投票サイトでは、ユーザーは(ログインしていない)質問に1回しか投票できません。ユーザーが特定の質問に既に回答していることをWebアプリが「覚えている」のはどうですか?ウェブアプリケーションで複数の値を「記憶」するための最良の方法
1つの方法は、回答するすべての質問に対してCookieを設定することです。セッション中に質問IDを保存する別の方法です。セッションIDとともに、dbに値を格納することもできます。
他の方法がありますか?
覚えておく必要があるかどうかによって異なります。
Cookieを受け入れないクライアントでは、Cookieソリューションは機能しません。
セッションで応答された質問IDを保存すると、セッションが有効であれば正常に機能しますが、セッションが無効化されるかタイムアウトするとメモリが失われます。
答えられた質問IDをデータベースに保存することは、最も長寿命で信頼性が高い方法です。意味がないので、セッションIDを保存しないことをお勧めします。質問に回答したときに表示されるタイムスタンプは、回答とともに、より適切かもしれません。
クッキーを使用することをお勧めします。クッキーを使用することをお勧めします。別のマシンに移動し、クッキーを削除したり、ブラウザを切り替えたりしない限り。ログインしていないため、これは特定のユーザーを追跡する最も簡単な方法です。ユーザーセッションにしようとすると、セッション情報が期限切れになり、再び戻って投票することができます。
また、ユーザーIPで行うこともできます。意味は質問に答えたIPアドレスを保存します。セッションを使用する際の問題は、ユーザーがいつでもキャッシュ/ Cookieをクリアしてから、サイトに戻って再び投票することができることです。 IPアドレスも偽装することができますが、それは少なくともわずかに困難です。セッションとあなたのDBに保存することの組み合わせは、最も簡単で簡単な方法です。
複数のユーザーが1つのIPを使用することも、1つのセッションを複数のIPにまたがることもできます。したがって、一般的にIPアドレスはこの種のものにとっては無用です。 – DanSingerman
100%完璧ではないと言われていますが、セッション数はそれほど多くありません。 – Gandalf
サーバー上の回答をXMLファイル(ユーザー/ ip /?ごとに1つ)に保存できます。新しいセッションを開始するときに、何らかの種類の認証や既存のファイルにユーザーをリンクする方法が必要です。このことができます
希望、
ビル
答えをDBに保存するのと同じではありませんか?私はXMLよりもDBを扱うほうが好ましい – user85748
それを行うには、他の方法がありますか?
いいえ、確かに良い方法はありません。
-1:役に立たない。 –
正しいダイレクト回答はどう役立ちませんか?クレイジー... – DanSingerman
+1、downvoteが削除されました、あなたはそうです、それを行うの100%簡単な方法です。 – karim79
私はクッキーを使用する場合、各質問ID(および回答)を別のクッキーに保存しますか?それはたくさんのクッキーを意味します、そうですか?ユーザーが50か100の質問に答えると、それはたくさんのクッキーになりますか?これでいい?
上記のように、基本的にクッキーの値は単なる文字列なので、質問を表す値の区切りリストを簡単に保存できます。 (ああ、ここにあなたの質問に説明を追加していい答えです) – DanSingerman
申し訳ありません:-( 区切りの値はうまくいくはずです – user85748
私はpolldaddyで確認しました。私はセッションとクッキーをクリアしましたが、それでも私の選択を思い出しました。彼らはIPアドレスを使用しているように見える
彼らはそうではありません同じマシンの2つのブラウザで私の投票を覚えています) – DanSingerman
クッキーは、それを行う最も簡単な方法のように聞こえる。すべての質問に対してクッキーを作成しますか?ユーザーが50の質問に答えると、50のクッキーを作成する必要がありますか? – user85748
基本的にクッキーの値は単なる文字列なので、値の区切りリストを簡単に保存できます。 – DanSingerman