2017-04-18 4 views
1

Ich mache eine Seite für die Abstimmung, jeder Benutzer kann ohne Anmeldung abstimmen. Benutzer kann nur einmal abstimmen. Wenn der Benutzer die Seite aktualisiert, muss die Abstimmungsschaltfläche nicht angezeigt werden.Wie man den Benutzer einschränkt, um nur einmal auf eine Taste in seinem Rechner zu klicken

Ich versuche zu speichern, wenn Benutzer in Cookies abstimmen, , aber es gibt ein Problem: Benutzer kann erneut abstimmen, wenn er einen anderen Browser öffnet oder Cookies entfernen.

also wie kann verhindern, dass Benutzer wieder abstimmen?

Antwort

2

Sie können nie ganz sicher sein, dass ein Benutzer nur einmal abstimmt. Sie können mehrere Überprüfungen hinzufügen. Speichern Sie die IP-Adresse des Benutzers und prüfen Sie, ob diese IP bereits für die Abstimmung verwendet wurde. Sie können auch verlangen, dass der Wähler auf Ihrer Website ein Konto erstellt, für das er seine E-Mail-Adresse überprüfen muss, und nur einem angemeldeten Nutzer die Möglichkeit geben soll, einmal zu wählen.

+0

wenn ich IP-Adresse speichern. IPs können dynamisch sein, und wenn wir interne IPs wie in der Firma auf diese Weise haben, werde ich verhindern, dass alle Angestellten in der Firma abstimmen, oder? – Jala

+2

@doha das ist richtig, der einzige Weg, um sicherzustellen, dass jemand nur einmal abstimmt, ist sie ein Konto erstellen, die Sie manuell überprüfen (indem Sie etwas wie Pässe überprüfen. Meistens wird jemand ein Konto mit einer eindeutigen E-Mail-Adresse erstellen Wie Sie wissen, kann jeder eine unendliche Anzahl von E-Mail-Adressen erstellen PS: Jemand kann auch eine IP-Adresse mit Hilfe eines VPN-Proxy "vortäuschen" –

0

Wenn der Benutzer nicht anonym ist, laden Sie nicht die HTML-Schaltfläche in seiner Ansicht. Zeigen Sie das erste Mal (bevor der Benutzer es anklickt) an, und speichern Sie dann, sobald er darauf klickt, ein Flag für diesen Benutzer und prüfen Sie dann, ob dieses Flag gerendert wird. Stellen Sie außerdem sicher, dass Sie die Schaltfläche aus dem DOM entfernen, sobald Sie eine Erfolgsantwort von Ajax erhalten (vorausgesetzt, Sie tun dies über Ajax). Wenn der Benutzer anonym ist, dann können Sie nicht wirklich eine idiotensichere Lösung machen. Eine Möglichkeit wäre, Browser-Fingerprinting und IP zu verwenden, um zu versuchen, dies zu begrenzen, aber es wird nie narrensicher sein. IPs können dynamisch sein und Sie können nie sicher sein, dass Sie einen eindeutigen Benutzer haben. Selbst dann würde es noch Spuren des Buttons in Ihrem DOM geben.

Verwandte Themen