2011-09-15 5 views
0

テーブルのエントリごとに1度だけサムネイルまたはサムをクリックできるようにしたいですか?サムを正しく上下させる方法は?

私の訪問者はログインしていないので、あなたのIPをチェックして、JSONを使用してIPアドレスとそのテーブルエントリのIDを記録する情報をdbに送信します。ユーザーが再度親指をクリックした場合は、JSONを使用してSQLと既存のIDが存在するかどうかを判断するためのSQLが存在します。そうでない場合は、サム・アップ・クリックが通過します。

このように見えるのは、時間がかかり、多くのDB領域を占有する、面倒で非エレガントなソリューションです。改善のためのあらゆる考え/助け?

ruby​​ 1.9.2を使用すると、レール3.1、jquery。

+0

あなたのソリューションは、これを行う最善の方法のように聞こえます... – Nayish

+0

IPベースソリューションの問題点は企業などの人々は通常1つのIPを共有しています。このような問題は、ユーザーをそのようにブロックして停止させようとしたときに起こりました。たぶん、IPアドレス+ユーザーエージェントのコンボなどが必要です。 –

答えて

0

ユーザー識別子としてIPアドレスを使用すると、NATルーターの背後にあるユーザー(オフィスや商業組織など)がすべて同じユーザーとして認識されるため問題になります。

この場合、クライアントのクッキーはより正確ですが、ユーザーがクッキーを消去できるか、完全に無効にすることができるため、100%の信頼性もありません。

これは技術的な問題ではなく設計上の問題です。ユーザーを特定する方法を持たずにユーザー状態を追跡するという基本的な問題があります。しかし、ログインしなくても、ユーザーがサイトとやりとりできるようにしたい場合は、妥協してください。

0

この種の機能の私の実装はあなたに非常に類似していた:

  • ユーザーがボタンをクリックすると、Javascriptのを通してそれを無効にして、
  • サーバーにAJAX要求を送信し、データベースにはありませんデータベースに新しい列を追加します。 IP、投票(上または下)およびID参照を格納する新しいテーブルを追加する方が効果的です。これはあなたのテーブルを邪魔するのを助け、将来的にあなたの投票システムを変更する方が簡単です。
  • PHPからページを描画するときに、ユーザーが以前に投票した場合、投票を考慮してボタンを上げ下げします。

マイケルが指摘しているように、場合によってはIPのみの方法では十分ではありません。おそらく、他のブラウザ固有の変数を追加することでシステムを見直すことができますが、必要なセキュリティの程度に依存します(ユーザーが2つの異なるブラウザを使用して2回投票できるため)。この詳細についてはhereをご覧ください。

これはあなたにとって理にかなっていると思います。

関連する問題