a. cookie herkeste ya da her cihazda açık olmayabilir... cookie olmaması durumu için alternatif bir yol olmalı. ayrıca cookie inatçı kişiler tarafından silinebilir...
b. herkes sabit ip ile değil; bu yüzden aynı ip olayı da sakat olacaktır.
c. veritabanında tutmak sağlıklı, ama cookie'ye de bununla ilgili bir bilgi kaydetmek gerek.
d.
PHP session id gibi session bazlı bir kayıt tutman gerekir.
önerim...
db'de session id tut, her oy verene zaman limiti tanımla (30 dakika oy veremesin), session id'ler unique olsun db'de, böylece tekrar edilmez. cookie sadece bu oylamaya yönelik session id'lerini tutsun, aynı session id'yi başka yerde de kullanman ufak bir güvenlik açığı (session id çalma) oluşturabilir. ip'leri okurken de proxy kontrolünden geçiren kısa fonksiyonlar var, proxy arkasındaki gerçek ip'sini bulmayı sağlayan. onu da kullan.