2016-12-03 4 views
0

Я делаю сайт опроса. И чтобы убедиться, что люди не могут голосовать дважды, я сохраняю свой IP-адрес с идентификатором для опроса в базе данных. Но для этого требуется, чтобы я отправил IP-адрес от клиента на сервер для извлечения данных из базы данных. Я делаю все это на кнопке: Голосуйте, чтобы он проверял, когда вы нажимаете на голосование.Проверить, если клиент уже голосовал

Теперь я использую Express и socketio и Node.js. Я не могу понять, как получить IP.

Пользователь не может быть зарегистрирован на голосование или создать опрос.

Метод выше, возможно, не самый лучший, и я думаю, что может быть лучше. Так что я задал себе вопрос:

Что было бы лучшим способом проверить, был ли кто-то уже голосовал на голосовании.

+0

Не существует даже надежного способа проверить, проголосовал ли человек или нет. IP-адреса не связаны с людьми, а они связаны с машинами. – Teemu

+0

В зависимости от интернет-соединения некоторые люди получают новый IP-адрес каждый день, например. Таким образом, я также сохраню уникальный идентификатор (опрос) в [localStorage] клиента (https://developer.mozilla.org/en/docs/Web/API/Window/localStorage) и выбранный идентификатор голосования. Как только пользователь запрашивает исходные данные опроса, у вас будет два элемента для сравнения, если он уже проголосовал. – skobaljic

ответ

0

Если вы хотите, чтобы найти IP-адрес, внутри экспресс-приложения:

app.get('/ip', function (req, res) { 
    var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress; 

    //do whatever you want with it 
}); 

И чтобы ответить на ваш вопрос, лично я бы требовать от пользователя ввести какой-то уникальной идентификации, как идентификатор университета номер, номер налогоплательщика (например, как мы идентифицированы здесь, например, в Бразилии), все, что вы можете гарантировать, уникально только для одного человека в вашей области интересов.

Если вы не можете получить что-то подобное, я думаю, вам придется регистрировать своих пользователей.

Смежные вопросы