Следующий regex соответствует алфавитно-цифровым символам и подчеркиванию:
^[a-zA-Z0-9_]+$
, Например, в Perl:
#!/usr/bin/perl -w
my $arg1 = $ARGV[0];
# check that the string contains *only* one or more alphanumeric chars or underscores
if ($arg1 !~ /^[a-zA-Z0-9_]+$/) {
print "Failed.\n";
} else {
print "Success.\n";
}
A: Свяжите каждый голос с IP. Автоматическое голосование по доверенности нетривиально. А вот получить 10-20 голосов в день таким способом несложно. А получить тысячи независимых IP-адресов для голосования сложнее (хотя это можно сделать с помощью коммерческих служб анонимайзера).
B: Используйте ReCaptcha.
C: Не отображать актуальные результаты. Людям должно быть нелегко определить, повлиял ли их голос на что-либо.
Нет простого способа полностью остановить людей от голосования несколько раз в день, если они действительно этого хотят.
Капчи полезны только для остановки ботов. Человек за компьютером просто выполнит (как и должно).
Файлы cookie могут быть легко удалены людьми с минимальными знаниями.
Отслеживание IP-адресов, вероятно, является наиболее эффективным способом замедлить работу людей, но, возможно, труднее всего реализовать. Его тоже может обойти кто-то, кто знает, как изменить свой IP-адрес.
В конце концов, все, что вы действительно можете сделать, - это максимально усложнить задачу по изменению результатов вашего опроса.
Создание надежная система голосования для развлечения, скорее всего, обязательно испортит ее. Мой совет - просто не предоставлять точный канал обратной связи! Если вы предоставляете отзыв о принятии голосования - показывайте промежуточные итоги с дубликатами, чтобы люди думали, что их лишние голоса учитываются.
Используя этот метод, люди не думают, что им нужно прибегать к дополнительному творчеству, чтобы подать дополнительные голоса.
Я не уверен, что Captcha уже достаточно хороши. Разве 4chan не обошел Recaptcha и другие методы предотвращения спама в рейтинге NYT Top People?