0

問題が発生しています。約 1,200 個のボタンがあるページがあります。この Web サイトはメンバーシップ Web サイトではありません。各訪問者を追跡して、クリックしたボタンが 24 時間経過するまで再度クリックできないようにしたいだけです。 .

Cookie を使用できることはわかっていますが、1,200 個のボタンには多すぎます。

ボタンのhtmlは次のようになります。

<li><a href="http://google.com" class="btn_smallorange" id="button1">Button 1</a></li>

何か提案はありますか? 私はほとんどすべての種類のスクリプトを受け入れていますが、この Web サイトは PHP で作成されていることを知っていますか?

4

2 に答える 2

3

ある種のブラウザー識別 ID を使用して特定のブラウザーを追跡するための選択肢は次のとおりです (そのため、特定のユーザーが誰であるかを知ることができます)。

  1. クッキー
  2. ローカルストレージ

1200 ボタンの状態を保存するための選択肢は次のとおりです。

  1. サーバーによって Web ページに与えられた状態のサーバー側ストレージ
  2. Cookie (おそらくデータをボタンごとに 1 ビットに折りたたむ必要があります 0
  3. ローカルストレージ

したがって、たとえば、ブラウザーを識別する値を Cookie に保存することと、実際のボタンの状態をサーバー側のデータベースに保存することを組み合わせることができます。次に、ページがレンダリングされるときに、Cookie にある browserID のデータベースでボタンの状態を検索し、レンダリングされた HTML ページから関連するボタンを無効にするか削除します。

1200 個のボタンの状態をボタンごとに 1 ビットに折りたたむことで、すべてのストレージを Cookie に保存できます。AZ と az と 0-9 といくつかの記号を使用すると、文字ごとに 64 個の値を簡単に持つことができ、文字ごとに 32 個のボタンのオン/オフ状態を保存できるため、1200 個のボタンのオン/オフ状態を保存できます。クッキーに簡単に収まる 38 文字です。各ボタンの時刻/日付も保存する必要がある場合、それは Cookie に収まらないため、サーバー側のストレージまたはローカル ストレージに任せられます。

参考までに、クライアント側のスキームは非常に簡単に回避できることを理解していただければ幸いです。実際、ユーザーが同じ URL に複数回アクセスするのを防ぎたい場合は、元の URL をブックマークするだけで、Web ページにアクセスしなくても好きなだけそこにアクセスできます。または、Cookie またはローカル ストレージを消去することもできます。または、別のブラウザーに移動することもできます。

複数回のアクセスを防止する唯一の現実的な方法は、ユーザー認証を要求し、特定のログイン ユーザーが特定のページを表示する前にそのページへのアクセスを許可されていることを (Web サーバー上で) 検証することです。したがって、これを確実に行いたい場合は、すべてサーバー側で行う必要があり、何らかのサイト ログインが必要になります。

于 2012-08-25T21:53:05.653 に答える
1

訪問者のブラウザで最大 1200 個の Cookie が急増するのを避けたい場合は、「セッション」を調べる必要があります。セッションは、単一の ID を訪問者のブラウザに Cookie として保存し、これをサーバー上のより大きなデータ ストアへのキーとして使用します。ブラウザーに送信されるデータが少ないということは、はるかに高速であるだけでなく、ユーザーがそれを見て混乱する可能性が少なくなることを意味します。

PHP のセッション サポートは、http://php.net/manual/en/intro.session.phpで文書化されています。

ちなみに、この方法で Cookieの不在などに依存する制限を回避することはまったく簡単なことではないことに注意してください。等

于 2012-08-25T21:54:29.760 に答える