Webseite. VoteUp oder VoteDown Videos. Wie schränken Sie die Anzahl der Nutzer ein, die mehrmals wählen?

8

Ich arbeite an einer Website (html, css, javascript, ajax, php, mysql) und möchte die Anzahl der Aufrufe eines bestimmten Nutzers für ein bestimmtes Video einschränken.

Es ähnelt dem YouTube-System, in dem Sie ein bestimmtes Video abstimmen oder abstimmen können.

Jede Stimme beinhaltet das Hinzufügen einer Zeile zur video.votes-Tabelle, die die Uhrzeit, die Wahlrichtung (nach oben oder unten), die IP-Adresse des Clients (mit PHP: $ ip = $ _SERVER ['REMOTE_ADDR'];)) und natürlich die ID des fraglichen Videos.

Das Hinzufügen von Stimmen ist so einfach wie: (Pseudocode): Javascript: onClick (vote (a, b, c, d)), das Variablen an PHP-Einfügeskript über Ajax weiterleitet, und schließlich ersetzen wir die Abstimmknöpfe durch eine "Danke für die Abstimmung" -Nachricht.

DAS PROBLEM:

Wenn Sie die Seite nach dem Voting neu laden / aktualisieren, können Sie erneut abstimmen, und noch einmal, und Sie erhalten den Punkt.

Meine Frage:

Wie beschränken Sie die Häufigkeit, mit der ein bestimmter Nutzer für ein bestimmtes Video abstimmt?

MEINE GEDANKEN:

Verwenden Sie Cookies und fügen Sie ein neues Cookie mit der ID des Videos hinzu. Und nach einem Cookie suchen, bevor Sie eine neue Abstimmung einfügen.

ODER

Bevor Sie die Abstimmung einfügen, verwenden Sie die IP-Adresse und die videoID, um zu sehen, ob derselbe Benutzer (IP) in den letzten 24 Stunden (mktime) für dasselbe Video (vidID) gestimmt hat, und erlauben oder erlauben voteInsertion basierend auf dieser Abfrage?

ODER

Interessiert Sie das nicht? Gehen Sie davon aus, dass die meisten Benutzer gesund sind und bessere Dinge zu tun haben, als Seiten zu aktualisieren und wiederholt zu wählen.

Anregungen oder Ideen sind willkommen.

    
Donal.Lynch.Msc 02.04.2010, 19:55
quelle

5 Antworten

4
  

Verwenden Sie Cookies und fügen Sie ein neues Cookie mit der ID des Videos hinzu. Und nach einem Cookie suchen, bevor Sie eine neue Abstimmung einfügen.?

Cookies können einfach deaktiviert oder sehr schnell gelöscht werden. Das Speichern einer Abstimmung in einem Cookie ist unzuverlässig und die Abstimmung kann problemlos durchgeführt werden.

  

Bevor Sie die Abstimmung einfügen, verwenden Sie die IP-Adresse und die videoID, um zu sehen, ob derselbe Benutzer (IP) in den letzten 24 Stunden (mktime) für dasselbe Video (vidID) gestimmt hat, und erlauben oder erlauben voteInsertion basierend auf dieser Abfrage?

Viele Benutzer könnten den gleichen Router verwenden, der effektiv die gleiche IP hat. Auf diese Weise könnten Sie Nutzer irritieren, indem Sie sie vom Wählen abhalten, weil eine andere Person aus demselben Büro / Haushalt bereits über das Video abgestimmt hat, bevor sie ihnen den Link sendet.

  

Interessiert Sie das nicht? Gehen Sie von der Annahme aus, dass die meisten Benutzer geistig gesund sind und bessere Dinge zu tun haben, als Seiten zu aktualisieren und wiederholt abzustimmen.?

Dies ist völlig subjektiv und hängt von der Wichtigkeit der Stimmen ab. Wenn die Abstimmung ein wichtiger Teil der Website ist, ist es am besten, so viel wie möglich zu kümmern. Zum Beispiel, wenn Videos am besten bewertet wurden, konnten einige Nutzer viele Male abstimmen, um die Popularität ihres persönlichen / Lieblingsvideos zu erhöhen, was den Eindruck der Beliebtheit erweckte, um mehr Aufrufe anzuziehen.

Wenn die Abstimmung wichtig ist, ist es am besten, nur registrierten Benutzern das Wählen zu erlauben. Sicher, die Leute können und werden mehrere Accounts zur Wahl stellen (siehe Ссылка für ein Beispiel), aber Sie machen es viel schwieriger für sie . Wenn die Abstimmung nicht wirklich wichtig ist, würde ich mit der Cookie-Option gehen.

    
Andy E 02.04.2010, 20:06
quelle
3

Wenn Sie sich nicht wirklich darum kümmern, speziell über den 4chan-Effekt, können Sie einfach einen Cookie verwenden. Gehen Sie nicht auf IP-Adresse, weil es Blöcke von Menschen alle hinter allgemeinen NAT-Router überall gibt.

Wenn Sie sich etwas mehr interessieren, müssten Sie Leute authentifizieren, aber ohne eine Art externes Token, um einzelne Menschen zu identifizieren, hätten Sie immer noch Probleme. Das hängt natürlich von der Art Ihrer Site ab. Zum Beispiel könnte eine Homebanking-Website die Abstimmung mit mehr Vertrauen unterstützen, da sie einen Benutzer mit einer tatsächlichen Kontonummer identifizieren kann.

    
Pointy 02.04.2010 19:58
quelle
3

Ich würde den Cookie-Ansatz verwenden. Es erlaubt, eindeutige Benutzer (für diejenigen, die Cookies akzeptieren) zu identifizieren, während IP ist ein schlechter Ansatz, da viele Benutzer die gleiche IP-Adresse teilen können.

Wenn die Website die Anmeldung verwendet, sollten Sie vielleicht die Option in Erwägung ziehen, dass nur angemeldete Benutzer wählen dürfen. In diesem Fall ist es sehr einfach zu wissen, ob ein Benutzer bereits gewählt hat, aber sehr restriktiv.

    
Claudio Redi 02.04.2010 20:02
quelle
2

Der beste Rat wäre vielleicht, registrierte Nutzer einfach zur Wahl zu lassen. Auf diese Weise können Sie WHERE user_id = 'x' and video_id = 'y' abfragen, wenn der Datensatz gefunden wird, lassen Sie ihn nicht wählen.

Für anonyme Benutzer ist das leider knifflig. Viele IP-Adressen werden in Netzwerken gemeinsam genutzt, so dass ein Benutzer im selben Gebäude nur einmal abstimmen kann.
Die Cookie-Option ist möglicherweise gut, außer dass sie gelöscht werden kann. Sie können einfach nichts auf der Benutzerseite vertrauen.

    
metrobalderas 02.04.2010 20:02
quelle
1

Wenn Sie wirklich versuchen, mehrere Stimmen zu verhindern:

  1. Lassen Sie nur authentifizierte Benutzer stimmen
  2. Speichern Sie Abstimmungen in einer Datenbank, um sie gegen
  3. zu überprüfen
  4. Speichern Sie auch Abstimmungen in Cookies, um eine erste Überprüfung durchzuführen und die Datenbankbelastung zu reduzieren.

Wenn Sie nicht wirklich interessiert sind, verwenden Sie einfach Cookies.

    
Corey Hart 02.04.2010 22:54
quelle

Tags und Links