Возможный дубликат:
Уникальные IP-адреса в системе голосования
Я разрабатываю небольшое веб-приложение, где ему нужна система онлайн-голосования, использующая php для моего события в колледже. Я получал IP-адрес и сохранял его в базе данных, чтобы предотвратить повторное голосование от одного и того же пользователя. Но потом я вспомнил, что мой колледж использует прокси-сервер, поэтому получение IP-адреса бесполезно. Я попытался получить доступ и сохранить Mac-адрес клиента с помощью javascript. Я опробовал несколько примеров, которые я нашел в Интернете .. но никто из них не работал. Можете ли вы, ребята, предложить мне альтернативу тому, как я могу получить результаты, которые я хочу?
Любая помощь была бы сердечно оценена.
С уважением, Ааюш Шреста Непал
Попросите их ввести свои адреса электронной почты и отправить ссылку на их электронную почту, которая позволяет им голосовать. Ссылка должна содержать некоторые хэш их электронной почты, и вам придется проверить, были ли они уже голосовали или нет.
Я понимаю, что студент может вводить несколько адресов электронной почты и голосовать несколько раз, но сколько писем у студентов действительно есть? И сколько времени они потратят на это?
Я предполагаю, что у вас нет доступа к какой-либо системе аутентификации через ваш колледж, так что это, вероятно, лучший способ.
Редактировать:
Другая идея – использовать аутентификацию Facebook (см. http://developers.facebook.com/docs/authentication/ ). Недостатком является то, что вы должны предположить, что у всех избирателей есть счета в facebook.
Сначала попросите пользователя зарегистрировать адрес электронной почты, чтобы впоследствии использовать систему голосования, связанную с этим адресом.
После того, как у вас есть адрес электронной почты (который проверяется с помощью ссылки активации, отправленной на это письмо), вы можете собирать связанные с голосованием данные от пользователя.
На самом деле нет эффективного, независимого от платформы способа предотвращения повторного голосования, если вы не применяете сертификаты пользователя и т. Д.
Единственный 100% -ный воздухонепроницаемый способ сделать это – заставить пользователей создавать учетные записи, для которых требуется отдельная индивидуальная информация, чтобы пользователь не мог создавать несколько учетных записей.
Ближе всего вы можете прийти без системы входа в систему – это библиотека Evercookie , в которой хранится UUID примерно в дюжине разных мест в браузере пользователя. Очень сложно их очистить (даже в режиме конфиденциальности в браузере), поэтому, если вы дадите Evercookie пользователю, когда они голосуют, вы, вероятно, можете заметить кого-то, кто голосовал раньше.
Обратите внимание, что это останавливает повторное голосование на уровне машины, а не на уровне пользователя (машина может иметь несколько пользователей, и у пользователя может быть несколько машин, которые могут включать повторные избиратели или блокировать избирателей, имеющих право голоса).