у меня еще вариант с системным временем.
врядли будет совпалать секунда в секунду время на разных машинах,довольно редко да и при этом с одного айпи+с того же браузера...
проверка времени.
Берем выдираем системное время сервера(H1.M1.S1) и полученное нами время на машине у клиента(H2.M2.S3)....дальше из серверного времени вычитаем клиентское время(H1-H2.M1-M2.S1-S),у нас получается разница двух времен(H3.M3.S3)...совпадение мало вероятно...(но и тут же есть проблемы,еслиу клиента слишком медленный инет то данная тема будет ошибаться,хотя кто будет проводить атаку на медленном сервере)...и вписываем эту разницу в файл с ip клиента и его браузером...
т.е.
берем выдираем ip,браузер,системное время(через яваскрипт)...потом подается запрос...
и мы со своей стороны делаем проверку. в 3этапа:
1-Проверяем наличие данного ip.
2-если ip уже есть сверяем его браузеры
3-если сново сопадает - проверяем время.
Итог-
если все совпадает то человек уже здесь был,иначе-голосует
p.s.: ну я бы и не отказался от куков,подделать можно да,но все же как дополнительную проблему для недруга использовать тоже нужно.
а еще вариант,если человек зашел под ИЕ,то можно выдрать имя компьютера...которое тоже врядли будет совпадать...
Код:
var compName=new
ActiveXObject("WScript.Shell").Environment("Process").item("COMPUTERNAME");
Да и сессии я думаю тоже есть смысл прикрутить.