2010-04-02 16 views
8

Sto lavorando su un sito web (html, css, javascript, ajax, php, mysql) e voglio limitare il numero di volte in cui un determinato utente vota per un determinato video.Sito Web. VoteUp o VoteDown Videos. Come limitare gli utenti a votare più volte?

È simile al sistema YouTube in cui è possibile votare o votare un video particolare.

Ogni voto comporta l'aggiunta di una riga alla tabella video.votes, che registra l'ora, la direzione di voto (su o giù), l'indirizzo IP del client (utilizzando PHP: $ ip = $ _SERVER ['REMOTE_ADDR'];), e ovviamente l'ID del video in questione.

L'aggiunta di voti è semplice come; (pseudocodice): Javascript: onClick (votazione (a, b, c, d)), che passa le variabili allo script di inserimento PHP tramite ajax e infine sostituiamo i pulsanti di voto con un messaggio "Grazie per votare".

IL PROBLEMA:

Se si ricarica/aggiorna la pagina dopo aver votato, si può votare di nuovo, e ancora, e ancora una volta, si ottiene il punto.

MIA DOMANDA:

Come si fa a limitare la quantità di volte che un determinato utente voto per un determinato video ??

MIEI PENSIERI:

Usi i cookie, e aggiungere un nuovo cookie con l'ID del video. E controlla la presenza di un cookie prima di inserire un nuovo voto.

O

Prima di inserire il voto, si usa l'IPaddress e la videoID per vedere se questo stesso utente (IP) ha votato per questa stessa video (vidID) nelle 24 ore precedenti (mktime), e consentire o non consentire l'inserimento del voto basato su questa query?

O

Non ti interessa? Prendiamo il presupposto che la maggior parte degli utenti sono sani di mente e hanno cose migliori da fare che aggiornare le pagine e votare più volte.

Qualsiasi suggerimento o idea benvenuto.

risposta

4

Si utilizzano cookie e si aggiunge un nuovo cookie con l'ID del video. E controlla la presenza di un cookie prima di inserire un nuovo voto.

I cookie possono essere facilmente disabilitati o cancellati rapidamente. Il salvataggio di un voto su un cookie non è affidabile e i voti potrebbero essere giocati senza problemi.

Prima di inserire il voto, si usa l'IPaddress e la videoID per vedere se questo stesso utente (IP) ha votato per questa stessa video (vidID) nelle 24 ore precedenti (mktime), e per consentire o non consentire il votoInserimento basato su questa query?

Molti utenti potrebbero utilizzare lo stesso router, con lo stesso IP. In questo modo, potresti essere irritante per gli utenti impedendoli di votare perché un'altra persona dello stesso ufficio/famiglia ha già votato il video prima di inviare loro il link.

Non ti interessa? Prendete il presupposto che molti utenti sono sani di mente e hanno cose migliori da fare che aggiornare le pagine e votare più volte.

Questo è del tutto soggettivo e dipende dall'importanza dei voti. Se il voto è una parte importante del sito, è meglio preoccuparsi il più possibile. Ad esempio, se i video sono stati ordinati in base alla valutazione più elevata, alcuni utenti potrebbero votare più volte per aumentare la popolarità del loro video personale/preferito, dando l'impressione di popolarità per attirare più visualizzazioni.

In caso di voto importante, è preferibile consentire solo agli utenti registrati di votare. Certo, le persone possono e faranno più account per votare (vedi http://gallery.live.com per un esempio), ma per loro è molto più difficile. Se il voto non è veramente importante, andrei con l'opzione cookie.

+0

Sì, più elettori sono ciò che sto cercando di evitare, in quanto il proprietario di videoX potrebbe aumentare notevolmente la sua popolarità. Ill prob andare con un registro e login per votare o lasciare commenti sui video. Grazie mille ragazzi ... –

+0

Che cosa hai intenzione di fare per impedire alla stessa persona di registrarsi più di una volta? – Pointy

+0

@Pointy: anche Google, YouTube, Microsoft e eBay hanno problemi con questo. Usano ancora sistemi simili per le valutazioni (feedback per eBay). C'è ben poco che puoi fare per fermare un utente che vuole davvero votare più di una volta, in qualsiasi modo tu lo guardi. Anche con il tuo esempio di conto bancario: i conti bancari fraudolenti sono impostati in ogni momento. –

3

Se non ti interessa davvero, in particolare sull'effetto 4chan, puoi semplicemente usare un cookie. Non andare sull'indirizzo IP, perché ci sono blocchi di persone dietro tutti i router NAT tradizionali ovunque.

Se ti interessa un po 'di più, devi autenticare le persone, ma senza una sorta di token esterno per identificare i singoli individui reali, avresti ancora problemi. Dipende dalla natura del tuo sito, ovviamente. Ad esempio, un sito di home banking potrebbe supportare il voto con maggiore sicurezza perché può identificare un utente con un numero di conto effettivo.

3

Vorrei utilizzare l'approccio cookie. Permette di identificare gli utenti unici (per quelli che accettano i cookie) mentre l'IP è un approccio errato poiché molti utenti possono condividere lo stesso indirizzo IP.

Se il sito utilizza l'accesso, è possibile che si consideri l'opzione per consentire solo agli utenti registrati di votare. In questo caso è molto facile sapere se un utente ha già votato, ma molto restrittivo.

2

Forse il miglior consiglio sarebbe semplicemente lasciare che gli utenti registrati votino.In questo modo puoi eseguire una query su WHERE user_id = 'x' and video_id = 'y', se il record viene trovato, non lasciarlo votare.

Purtroppo, per gli utenti anonimi, potrebbe essere difficile. Molti indirizzi IP sono condivisi sulle reti, quindi un utente nello stesso edificio di un altro potrebbe votare una sola volta.
L'opzione cookie potrebbe essere buona, tranne che può essere cancellata. Non puoi fidarti di nulla da parte dell'utente.

1

Se il vostro veramente cercando di evitare voti multipli:

  1. solo consentono agli utenti autenticati votare
  2. Conservare voti in un database per controllare contro
  3. anche memorizzare voti nei cookie di fare il check iniziale e ridurre il carico sul database.

Se non ti interessa, basta usare i cookie.

Problemi correlati