Ограничить 1 голосование на IP-адрес?

Подход, который Вы предлагаете, как гарантируют, не даст Вам результат, который Вы ищете - что, если Вы имели tbody, например:

......

Вы закончили бы со следующим:

.........

я поэтому рекомендовал бы этот подход вместо этого:

$('#myTable tr:last').after('......');

можно включать что-либо в after() метод, пока это - допустимый HTML, включая несколько строк согласно примеру выше.

Обновление: Пересматривание этого ответа после недавнего действия с этим вопросом. eyelidlessness делает хороший комментарий, что всегда будет tbody в DOM; это верно, но только если существует по крайней мере одна строка. Если у Вас не будет строк, не будет никакого tbody, если Вы не определили тот сами.

DaRKoN_ предлагает добавление tbody вместо того, чтобы добавить содержание после последнего tr. Это обходит проблему наличия никаких строк, но все еще не является пуленепробиваемым, как Вы могли теоретически иметь [приблизительно 1 110], элементы и строка добавить к каждому из них.

Уравновешивание всего, я не уверен, существует единственное короткое решение, которое составляет каждый возможный сценарий. Необходимо будет удостовериться счета кода jQuery с разметкой.

я думаю, что самое безопасное решение состоит в том, чтобы, вероятно, гарантировать Ваш table, всегда включает по крайней мере один tbody в Вашу разметку, даже если это не имеет никаких строк. На этой основе можно использовать следующее, которое будет работать однако много строк, которые Вы имеете (и также объясните [приблизительно 1 113] элементы):

$('#myTable > tbody:last-child').append('......');

6
задан burnt1ce 7 August 2009 в 20:05
поделиться

6 ответов

Я бы посоветовал не использовать подход IP. Когда я смотрел на это раньше, некоторые из ваших крупных интернет-провайдеров повторно используют IP-адреса (AOL ...), но если вы действительно используете IP-адреса, используйте базу данных для их отслеживания. Быстрый способ сделать это - сделать его уникальным ключом и перехватить исключение как «уже проголосовавшее».

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

19
ответ дан 8 December 2019 в 02:24
поделиться

Если вы используете IP-адреса, вы ограничите большинство компаний одним голосом, потому что они направляют весь исходящий интернет-трафик через брандмауэр или прокси-сервер. Мы сделали это пару лет назад и обнаружили, что весь трафик AOL идет только с 5 IP-адресов.

12
ответ дан 8 December 2019 в 02:24
поделиться

Как правило, да, вы бы создали таблицу базы данных для голосов и просто сохраните выбор + IP-адрес - затем при вставке выполните запрос БД, чтобы увидеть, существует ли уже запись с заданным IP.

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

Какой именно вопрос вы задаете?

4
ответ дан 8 December 2019 в 02:24
поделиться

Да, использовать базу данных. Не полагайтесь на файлы cookie, их легко удалить.
ИМО, пока что ограничение голоса по IP-адресу - лучший вариант.

1
ответ дан 8 December 2019 в 02:24
поделиться

IP-адрес имеет свои ограничения, как мы уже отметили выше. но есть много других характеристик браузера, которые могут подавить озорных избирателей. BrowserID, например, различен практически для каждого браузера. Вы можете использовать комбинацию BrowserID и IP-адреса для создания уникального идентификатора.

например, он отличается практически для каждого браузера. Вы можете использовать комбинацию BrowserID и IP-адреса для создания уникального идентификатора.

например, он отличается практически для каждого браузера. Вы можете использовать комбинацию BrowserID и IP-адреса для создания уникального идентификатора.

0
ответ дан 8 December 2019 в 02:24
поделиться

Я всегда делал это для объединения пользовательского агента и IP-адреса в хэш MD5 (в некоторых случаях это позволит людям с одного и того же IP-адреса голосовать, если они используют различных браузеров), и сохраните его как «отпечаток пальца» для голосования в базе данных и добавьте к нему уникальный ключ. Как сказал IPX Арес, оттуда вы можете поймать исключение дублированного ключа, и все должно быть в порядке.

Если вы хотите разрешить людям голосовать один раз в день, вы также можете добавить Ymd к этому «отпечатку пальца» или другому вариации, позволяющие x количество в час или x количество в день.

2
ответ дан 8 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: