últimoartículo

Formulario Anti-SPAM con Javascript y Mootools

23.11.2007

Últimamente está muy de moda utilizar los formularios de contactos o formularios de envío de comentarios a blogs para hacer SPAM dejando direcciones de sitios en busca de publicidad gratuita. Por otro lado tenemos a los usuarios que usan los formularios para desahogarse y desatar su ira con palabras obscenas que luego los webmasters tienen que sufrir.
Para solucionar esto les propongo un script sencillo que nos puede ayudar a prevenir algunos de estos dolores de cabeza. En este post no estoy ofreciendo un componente, solo un pedazo de código javascript que podemos integrar en nuestra web con conocimientos básicos de programación javascript.
Aunque los chequeos que hace el script son bastante triviales me he auxiliado de la poderosa biblioteca de Mootools para añadir unos toques de efectos visuales y para valerme de su facilidad para gestionar los eventos.
Para utilizar este código necesitarían descargarse Mootools e incluirlo en la página.

<script type=”text/javascript” src=”js/mootools-release-1.11.js”></script>

En el HTML debe haber una capa donde notificaremos en caso de detección de SPAM.

//message es el id de algun textarea dentro de nuestro formulario
//<textarea cols="50"></textarea>
var txt = $('message');

//log_div es el id de una capa donde mostraremos los posibles errores
//<div></div>
var log = $('log_div');

//Añadimos un efecto al div donde mostraremos los errores
var fx = new Fx.Styles(log, {
	duration: 3500,
	wait: false,
	transition: Fx.Transitions.Quad.easeOut
});

//Añadiendo eventos al textarea
txt.addEvents({
    //On Focus
	//Si queremos cambiar el color de background cuando se seleccione
	//O si queremos eliminar el texto por defecto
	'focus': function() {
		if (txt.value.contains('escribe tu mensaje...')) txt.value = '';
		//Cambiando color de background
		txt.setStyle('background','none #6F6F6F');
	},

	//On Keyup
	//Chequeamos que no halla codigo malicioso ni palabra obscenas
	'keyup': function() {
		//Convertimos todo a minúsculas
		var text = txt.value;
		text = text.toLowerCase();

		//Chequeando que no se escriban direcciones en el mensaje
		var regexp = /(ftp|http|https)://(w+:{0,1}w*@)?(S+)(:[0-9]+)?(/|/([w#!:.?+=&%@!-/]))?/
		var x = regexp.test(text);

		//Por lo menos que no aparezca nada que comience con www
		var regexp2 = /(www)/
		var y = regexp2.test(text);

		//Si algunos de los chequeos anteriores dió positivo notificamos en el evento de que hay SPAM
		if (x==true || y==true){
		    //Ejecutamos el evento de notificacion de SPAM
			txt.fireEvent('burn', 'No se permiten direcciones web!');
			txt.value = txt.value.replace("www","");
			txt.value = txt.value.replace("http://","");
		}

		//Chequeamos que no se utilicen tags de html
		if(txt.value.contains("")){
			txt.value = txt.value.replace(">","");
		    //Ejecutamos el evento de notificacion de SPAM
			txt.fireEvent('burn','Eliminando caracteres potencialmente peligrosos');
		}

		//Diccionario de palabras no deseadas
		words = new Array("viagra","fuck","cialis","porno");

		//Chequeamos que no aparezcan ninguna de las palabras anteriores
		for(var i=0; i &lgt; words.length; i++){
			if(txt.value.contains(words[i])){
				txt.fireEvent('burn','SPAM reconocido');
				txt.value = txt.value.replace(words[i],'');
			}
		}
	},
	//On Burn
	//Este es un tipo de evento creado por nosotros que ejecutaremos siempre que se encuentra un SPAM
	'burn': function(text) {
	    //Insertamos el texto el el div donde se muestran los errores
		log.setHTML(text);

		//Ejecutamos el efecto para que haga una transición de opacidad
		fx.start({
			//'background-color': ['#990000', '#fff'],
			'color': ['#ff9c66', '#101b21'],

			'opacity': [1, 0]
		});
	}
});

Para ver un ejemplo funcionando pueden ir a la página de mi empresa equipo24 e ir a la sección de Contacto y probar algunas palabras como “viagra” o “porno”.
Espero que les sea útil.

artículosanteriores


Blackle: ¿Google en Modo Ahorro?

19.11.2007

Blackle: Google en Modo AhorroNos cuentan que si Google tuviera una pantalla negra, teniendo en cuenta la gran cantidad de personas que lo usan, se calcula que se ahorrarían unos 750 megavatios/hora anualmente. Como respuesta a esto, Google ha creado una versión negra, llamada Blackle, con exactamente las mismas funciones que la versión en blanco pero, obviamente, con un consumo de energía menor. Corre la voz y úsalo, cada poquitito cuenta, no?…..

Nota:
Chivatazo de Edu.

Flood Maps: Predicción de la Gran Inundación

07.11.2007

Flood Maps: Predicción de la Gran Inundación en la Costa del SolVía Rufadas descubrimos un nuevo servicio online: Flood Maps. Se trata de un sistema que predice las áreas que serían inundadas por el efecto del deshielo de los casquetes polares.

La sorpresa es mayúscula cuando se comprueba que poblaciones del interior como Sevilla son inundadas si el nivel del mar aumentara 14 metros…

Por cierto, Fuengirola la perdemos, aunque Marbella se salva…