07-06-2011, 12:07 PM
(Modification du message : 07-06-2011, 12:08 PM par Viciousity.)
Un petit code a l'arrache pour illustrer mes propos (fait rapidement )
# En imaginant une base de donnée avec :
String visitor_ip
Integer try_count
DateTime last_try_at
# Pour vérifier le captcha.
# =========================
# On récupère le visiteur si il existe.
visitor = TableIp.find_by_visitor_ip(request.remote_ip)
# Si il est en base de donnée
if visitor
# Si jamais il a tenté entre 10 et 20 essais.
show_captcha if (10..20).include?(visitor.try_count)
# Si jamais plus de 20 essais.
refuse_user if visitor.try_count > 20
end
# Quand on poste le formulaire :
# ==============================
# On récupère le visiteur si il existe.
visitor = TableIp.find_by_visitor_ip(request.remote_ip)
# Si il est déja en base de donnée
if visitor
# Si jamais son dernier essai date de - de 30 minutes(1800 secondes)
if visitor.last_try_at < Time.now - 1800 ? visitor.try_count=0 : visitor.try_count +=1
# On update avec le moment présent.
visitor.last_try_at = Time.now
visitor.save
else
TableIp.create(:visitor_ip=>request.remote_ip, :try_count=>1, :last_try_at=>Time.now)
end