Marcofbb Noticias y Artículos Webmasters



Publicidad marcored

Clase Anti-Bots en PHP

  • 29/05/2011
  • 3:24 am
  • marcofbb

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>

Share

¿Necesitas ayuda? o ¿Asesoramiento webmaster? Registrate en nuestro foro de consultas

Posts Relacionados

Total de Comentarios: 4

Avatar
13/06/2011
4:01 pm

Que alegria ver que te sirvio lo que te enseñé y que respetaste los creditos.

Esta interesante la modificacion y mejora que hiciste del codigo respecto del ejemplo que te pase.

Te felicito 😀

Avatar
roberto
27/06/2011
2:22 pm

hola como puedo hacer un bot para escaneo de spam, o los comados para irc

    Avatar
    27/06/2011
    6:00 pm

    Con "cron" para escanear spam, haces un archivo php que busque el spam y con cron haces que se ejecute cada X tiempo

Avatar
Alma Rosa
02/05/2012
2:04 am

Hola me gustaria mucho ponerme en contacto contigo.... lo que pasa que necesito crear un bot pero no se como .... URGE que me ayudes... xfavor


Enviar Comentario

(*)

(*)