Вообще-то куки - это не выход. ИМХО отключить их очень несложно, и ничего уже не поможет.
Запоминать IP - тоже не надежно, но все-таки более реально.
Как я понимаю, "небольшой скриптик" не является супер-навороченым проетом, который необходимо защищать от накрутки, как счет в ЦБ...
ИМХО есть три варианта решения:
1) Отслеживать IP
2) Писать Куки
3) И то и другое.
Как я понимаю, этот скрипт пойдет в массы? Если так, то применение MySQL неприемлимо.
Тогда остаются текстовые файлы.
Но обо всем попорядку:
Если есть MySQL:
просто создаем таблицу с тремя полями:
IP | SID | IDTEEM
Где:
IP - ip-адрес голосующего
SID - может быть и не SID, но любое число, унифицирующее юсера, которое хранится в сессии.
IDTEEM - Id того голосования, за которое голосовал.
Далее при попытке голосования, запрашиваем в базе:
Сначала IP и IDTEEM, и если результат нулевой (ноль записей),
то запрашиваем SID и IDTEEM.
Если и здесь результат нулевой, значит:
а) пользователь и вправду впервые голосует
б) пользователь очень хочет Вас обмануть, и ничего Вам не поможет :-)))
Далее принимаем голосование, и ставим ему в броузер SID, и в базе сохраняем SID и IP.
Как же работать с текстовыми файлами?
А элементарно:
Для каждой темы голосования создаем 2 своих текстовых файла. Назваем их, скажем "ip".$IDTEEM.dat (ip1.dat) и "SID".$IDTEEM.dat.
Получаются пары, вроде:
ip1.dat sid1.dat - файлы с ip и sid первого голосования
ip2.dat sid2.dat - файлы с ip и sid Второго голосования и т.д.
При заходе просто перебираем файл с IP и SID данного голосования посторочно (file()), и preg\'ом ищем совпадения.
Если нашли, то юзер уже голосовал. Если нет - то нет...