Clase Anti-Bots en PHP
- 29/05/2011
- 3:24 am
La clase anti-bots crea un archivo por cada formulario y envía el nombre del archivo vía un input oculto para que luego verifique si el archivo esta creado. Si esta creado automáticamente te deja seguir y lo elimina, y si no esta creado no te deja seguir.
Tenemos que crear una carpeta llamada “auth” para que guarden los archivos generador ahí.
antibot.class.php
<?php // @file = antibot.class.php // @creditos = SERbice & Marcofbb class AntiSpam { function __construct() { ///Aca tenemos una lista con caracteres para que se forme una cadena de caracteres al azar. $letras=array('a','8','1','c','d','e','b','f','g','i','h','j','k','l','m','n','p','5','4','3','2','6','7','9','0','c','d','e','b','f','g','i','h','5','r','q','t','5','4','3','j','k','l','m','n','p','o','r','q','t','5','4','y','z','x','3','2','6','7','9','0','s','u','v','w','a','8','1','c','d','e','b','f','g','i','h','j','k','l','m','n','p','5','4','3','2','6','7','9','0','c','d','e','b','f','g','i','h','5','r','q','t','5','4','3','j','k','l','m','n','p','o','r','q','t','5','4','y','z','x','3','2','6','7','9','0','s','u','v','w'); /// la variable $strletras va a tener una lista de caracteres al azar $strletras=$letras[rand(0,count($letras))].$letras[rand(0,count($letras))].$letras[rand(0,count($letras))].$letras[rand(0,count($letras))].$letras[rand(0,count($letras))].$letras[rand(0,count($letras))].$letras[rand(0,count($letras))].$letras[rand(0,count($letras))].$letras[rand(0,count($letras))].$letras[rand(0,count($letras))]; /// $hash va a tener el hash tipo sha1 de la cadena contenida en $strletras $hash=sha1($strletras); $this->hash = $hash; } // El codigo hash ya generado function generar() { /* creamos un archivo en la carpeta auth. el nombre del archivo sera $hash. el contenido del archivo sera un timestamp del momento en el que se creo si el archivo ya existe lo sobreescribira automaticamente */ file_put_contents('auth/'.$this->hash,mktime()); return $this->hash; } function validar($n) { if (is_file('auth/'.$n)) { unlink('auth/'.$n); return true; } else { return false; } } } ?> |
ejemplo.php
<?php include('antibot.class.php'); $antispam = new AntiSpam(); if($_POST['button']) { if($antispam->validar($_POST['auth'])) { echo "VALIDO"; } else { echo "NO VALIDO"; } exit(); } ?> <form id="form1" name="form1" method="post" action=""> <input type="text" name="Nombre" value="Tu nombre" /> <input type="hidden" name="auth" value="<?=$antispam->generar()?>" /> <input type="submit" name="button" id="button" value="Enviar" /> </form> |
¿Necesitas ayuda? o ¿Asesoramiento webmaster? Registrate en nuestro foro de consultas
Posts Relacionados