diego sevilla’s weblog
it is better to remain silent and be thought a fool,
than to open your mouth and remove all doubt -- groucho marx

31/3/2005

Más cosas en qué pensar. El spam en WordPress realmente un problema

Filed under: español, blogging — Diego Sevilla @ 23:27 — In English

Google está eliminando enlaces de sitios con WordPress debido al spam. Visto aquí.

¿FAES?

Filed under: español, crítica/critics — Diego Sevilla @ 1:46 — In English

¿Pero qué coño es esto? Acabo de verlo en la tele y no me lo creo “El gobierno de entonces hizo lo que pudo, pero ellos siempre pidieron más: pidieron lo imposible” a la vez que sale Zapatero que se enmarca a continuación dentro de un móvil… ¡¡¡¡¡PERO QUÉ PATÉTICO!!!!! Por favor, necesito un enlace a algún sitio donde salga esa mierda. Tengo que verlo. Ahora vienen con esas. Hay que ver. A estos de la derecha sí que les duran los cabreos por las pérdidas electorales. Es un INSULTO a los españoles pensar que una nación va a cambiar el voto por lo que pase un fin de semana. ¿El resto de los 4 u 8 años de gobierno no cuentan? Además, ¿por qué esos días hicieron “cambiar” (según PP y cía.) la voluntad de los españoles? Creo yo que por algo sería… Sólo esa reflexión ya sería suficiente, pero no. Erre que erre. Qué pérdida de tiempo más irrespetuosa.

30/3/2005

Un reto: crackear mi plugin

Filed under: español, blogging, código/code — Diego Sevilla @ 15:35 — In English

Crackear está bien. Sobre todo si se hace para aprender y los conocimientos se aplican para hacer el bien. Os propongo un mini-reto. Hace un tiempo desarrollé un plugin anti-spam para Wordpress (WP-Morph). No es porque lo haya hecho yo, pero es la caña :) . El resultado: ni un spam desde que lo puse. Incluso mostré en mi weblog el código fuente y también lo discutieron en BloggingPro. El único requisito del plugin es tener activo javascript para enviar comentarios. Las ventajas: ni un spam, por lo que no hace falta moderar los comentarios.

¿Cómo se consigue eso? Pues muy sencillo. El plugin genera para cáda página un código JavaScript aleatorio que el browser tiene que interpretar para conseguir un resultado. El browser entonces tiene que devolver el resultado de ejecutar el javascript como un campo más del formulario de comentario. Por ejemplo, un código al azar generado es el siguiente:

function go_anti_spam()
{
        eElement = document.getElementById("chk");
        if(!eElement){ return false; }
        else
        {
 v0=1368;v1=1581;v2=927;v3=802;v4=1280;v5=968;v6=1745;v7=1147;v8=661;v9=1376;v10=2086;v11=1539;v12=165;v13=1380;v14=1407;v15=114;if ( v15 > 2059)
                                    { v7 = v15; }if ( v15 > 1735)
                                    { v10 = v12; }if ( v11 > 1503)
                                    { v12 = v8; }v10=(v13-v5)%2514;v4=Math.abs(v4);
                                   v4%=26; while (v4--) {
                                   v0++; }v0=(v8+v12)%2514;eElement.value = (v0+v1+v2+v3+v4+v5+v6+v7+v8+v9+v10+v11+v12+v13+v14+v15)%2514;
            return true;
        }
}

El gran problema que les plantea esto a los spammers es que tendrían que hacer que sus programas de envío de comentarios automáticos supieran interpretar JavaScript… Hasta este punto de sofisticación no llegan. Sin embargo, aquí viene el reto:

Pensando se me han ocurrido al menos tres formas de saltarse el plugin de una forma más o menos sencilla (o al menos, en teoría). Una de ellas ya os la he dicho: Que los spammers tengan un programa que interprete también el javascript de la página (harto improbable).

¿Cuáles son las otras dos formas? Grandes premios para los acertantes. :D

Anoche lloré con un libro

Filed under: español, crítica/critics — Diego Sevilla @ 11:41 — In English

Hacía tiempo que no me pasaba. Y no es porque fuera malo, no :) . Quizá sea porque soy un romántico, o porque José Luis Corral lo describe todo muy bien, o porque la novela es muy buena. “El número de Dios”, así se llama, y la verdad, es genial. En muchos momentos parecía estar leyendo un libro de historia, pero absolutamente ameno. Incluso todos los personajes son reales salvo uno, lo cual hace que cuando terminas de leer la novela en la que aparece Fernando III y Alfonso X El Sabio entre otros, sepas un poco más de la historia de España y de cómo era la construcción de las catedrales del medievo. Quizá, como dice alguna crítica, los pesonajes sean algo planos, pero pienso que ese es el único detalle malo que se le puede sacar a la novela. Una joya.

Ahora: “Imprimatur” de Monaldi & Sorti. Ya hablaré sobre ella.

Mis coqueteos con AMD64

Filed under: General, español — Diego Sevilla @ 1:16 — In English

Tenía que comprarme un ordenador ya y me he decidido por un AMD 64. En concreto un Athlon 64 3400+ a 2.4 GHz con 1GB de RAM y 250GB de disco duro Serial ATA. Por supuesto que la primera idea fue instalarle linux, y funcionó casi a la primera. Aquí cuento lo que he hecho. Primero, esta es la máquina:

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 12
model name      : AMD Athlon(tm) 64 Processor 3400+
stepping        : 0
cpu MHz         : 2412.160
cache size      : 512 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 pni syscall nx mmxext lm 3dnowext 3dnow
bogomips        : 4751.36
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp

Como últimamente me he dado cuenta de que dentro de las distribuciones basadas en Debian (sin duda la mejor distribución) Ubuntu es una de las más cuidadas en todos los aspectos, me decidí a ponerle la última versión, a saber, la Hoary 5.04. Sin embargo, esa distribución, al menos en la versión para AMD64 tiene un problema al instalar el núcleo. O bien mi ISO estaba mal, o la grabación, pero el caso es que el paquete del núcleo que llevaba no se instalaba bien. Tuve que bajarlo de la red e instalarlo a mano, lo cual no fue muy fácil.

Sin embargo, el sistema no funcionaba muy bien. Se colgaba cuando entraba en modo multiusuario. Después de muchas vueltas, me di cuenta de qué programa era el que fallaba: powernowd, o lo que es lo mismo, el sistema fallaba al intentar cambiar la velocidad del procesador (los nuevos procesadores son una maravilla de la técnica y permiten cambiar la velocidad del procesador conforme haga más o menos trabajo). Así que lo eliminé. Aún así, el problema persistió.

Busqué ayuda por otro sitio y vi que debian tenía una iniciativa de debian para AMD64. Pensé en instalar ese núcleo a ver si los problemas se iban. Y efectivamente, con ese núcleo todo ha ido bien (eso sí, sin powernowd ni ningún otro programa que cambie la velocidad del procesador, al menos de momento). Por ahora el núcleo que tengo es este:

Linux version 2.6.11-9-amd64-k8 (root@athlon.lowpingbastards.de) (gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-12)) #1 Sun Mar 27 12:58:31 CEST 2005

(específico para K8) y va bastante bien. Sólo tiene un problema: que hay muchas cosas compiladas para i386 y derivados que no se pueden instalar directamente (la arquitectura no es la misma) y aunque este procesador puede ejecutar aplicaciones para i386, hay que hacer ciertos hacks por ahora.

Así que lo verdaderamente interesante es este tutorial de instalación de Debian en AMD64. Por ahora lo estoy haciendo. La idea es tener un sistema con chroot en el que se pueden instalar los paquetes i386. Así se pueden ejecutar todos los programas que todavía no estén disponibles para AMD64.

El ordenador va muy rápido, sobre todo en el modo nativo de 64 bits, pero no se me ocurre ningúna prueba que sirva para ver cuán rápido va. Digamos que Firefox 1.0.2 de Ubuntu Horary tarda, en la primera ejecución, unos dos segundos en salir en la pantalla.

Intenté instalarle Windows XP, pero no hubo suerte: no soporta la controladora/discos Serial ATA y tengo que ver cómo obtengo los drivers para ponérselos al XP en la instalación. Hasta ahora no he tenido suerte. Menos mal que utilizo sistemas operativos que se pueden llamar así :)

29/3/2005

Planeta Código

Filed under: español, blogging, código/code — Diego Sevilla @ 19:35 — In English

Pues he sido enlazado en la magnífica idea de Juanjo Navarro: Planeta Código

planetacodigo

Optimizando código

Filed under: español, código/code — Diego Sevilla @ 19:30 — In English

Recientemente he tenido que hacer un programa en el que se tenían que unir cadenas separadas por un espacio. Esto es una chorrada de código, ya lo sé, pero me han venido a la cabeza un par de cosas que el buen programador tiene que tener en la cabeza. El único problema de esta función es que tiene que añadir un espacio entre los diferentes elementos del array salvo al final. Esto nos hace que tengamos un código como el que sigue (supongamos que hay “npalabras” y el array que las contiene es “palabras”. “cadena” está inicialmente vacío y suponemos también que tiene el tamaño suficiente para contener la cadena resultado):

for (i=0; i < npalabras; ++i)
{
    strcat(cadena, palabras[i]);

    if (i != npalabras - 1)
        strcat(cadena, " ");
}

Este código es perfectamente normal, y de hecho lo he utilizado de formas parecidas yo mismo anteriormente. Sin embago, estudiándolo un poco tenemos varias cuestiones:

1. En cada bucle se hacen dos comparaciones. Una para el bucle y otra para el if. Esto es muy costoso, sobre todo porque se hace una comparación en cada paso del bucle cuando sabemos que sólo se cumple en la última iteración. Los saltos por lo general rompen la estructura de ejecución interna de los procesadores. Sí, ya sé que llevan predictores de saltos, pero hay ocasiones como esta en las que podemos optimizar el código de una forma elegante.
2. Se hace una resta cada iteración para la comparación (npalabras - 1).

Alguien puede decir que el tiempo del strcat comparado con lo otro es ridículo. Y tiene razón, pero en este caso. Aquí estamos viendo la idea general, la optimización. Así que manos a la obra. La siguiente versión:

for (i=0; i < npalabras - 1; ++i)
{
    strcat(cadena, palabras[i]);
    strcat(cadena, " ");
}
strcat(cadena, palabras[i]);

Ahora, gracias a repetir el código del último bucle podemos optimizarlo. Nótese que después del bucle, la variable “i” tiene el valor correcto para el último strcat. Sin embargo, todavía no me gusta. Tiene un detalle que no me gusta: la comparación se hace en cada bucle y se tiene que calcular en cada bucle la expresión “npalabras - 1″. Para mí la mejor solución sería entonces:

register size_t np = npalabras - 1;
for (i=0; i < np; ++i)
{
    strcat(cadena, palabras[i]);
    strcat(cadena, " ");
}
strcat(cadena, palabras[i]);

Y así colorín colorado hemos optimizado un bucle. Quizá este ejemplo no sea el mejor del mundo, pero ejemplifica que programar no es sólo hacer funcionar un programa. Me encanta la programación y la optimización de código. Iré mostrando más cosas conforme pase el tiempo.

¡Por fin! ¡Fotos de los tambores de este año!

Filed under: General, español — Diego Sevilla @ 19:02 — In English

¡¡Ya están aquí!! ¡¡Qué bien lo pasé!! Las fotos de los tambores ya están aquí. Como muestra valga un botón:

emma y yo

julian y yo

tambor, castillo y ojo

Si nadie va a tomar cerveza, yo tampoco

Filed under: español, blogging — Diego Sevilla @ 16:28 — In English

Si por algo me gustan los weblogs es porque se conoce gente muy inteligente.

Algo en qué pensar…

Filed under: General, español — Diego Sevilla @ 15:45 — In English

Why can’t you pay attention anymore?. En la era de la información tendemos a ser más improductivos. Un artículo muy interesante que destaca cómo el hacer muchas cosas a la vez (en particular responder e-mails, hacer cosas que no requieran mucho pensar, etc.) puede hacernos menos productivos y menos creativos. La versión inglesa del “el que mucho abarca poco aprieta”, pero qué pena verme tan reflejado…

27/3/2005

Planet Murcia Reloaded

Filed under: español, blogging — Diego Sevilla @ 22:49 — In English

Gracias a la magnífica plantilla de Juan José Vidal el aspecto de Planet Murcia ha mejorado muchísimo. Es un genio este hombre en diseños de este tipo. Me ha mandado dos diseños, así que no sé cuál de ellos coger. A ver si tengo tiempo de hablar con él para decidir el diseño final y ver si diseñamos alguna imagen para el planet (bueno, la diseñará él seguro :) ).

¡¡Gracias, Juanjo!!

Continuando con el planeta, la generación del mismo se encuentra con problemas con varias bitácoras. Desde hace tiempo quiero dedicar un post a este problema y no he tenido tiempo. El caso es que el feed de algunas de las bitácoras da error y no sale listado en el planet. Esto estoy seguro de que lo habrán solucionado de alguna manera en otros planets, por lo que voy a investigar un poco. Después cuando tenga tiempo pondré otra entrada comentando el problema concreto a ver si a alguien se le ocurre una solución.

24/3/2005

XSH: XML Editing Shell

Filed under: General, español — Diego Sevilla @ 14:13 — In English

Pues nada, me ha parecido una utilidad interesante, poder aplicar XPath automáticamente con un shell, y lo que es más interesante, aplicarlo en el modelo UNIX (tuberías, etc.). Lo he obtenido vía Stefan Tilkov. Hay un pequeño tutorial y también se puede descargar. Me he sorprendido un poco al leer el tutorial… No sé si este hombre tendría futuro en España:

------------------------------------------------------------
 xsh - XML Editing Shell version 2.0.2/0.12 (Revision: 2.2)
------------------------------------------------------------

Copyright (c) 2002 Petr Pajas.

22/3/2005

Esta noche es la gran noche

Filed under: General, español — Diego Sevilla @ 14:29 — In English

Pues sí, esta noche tambores en Mula (La verdad es que este sitio web es demasiado mojigato y ñoño con tanta imagen de santos y todo, pero al menos cuenta lo de los tambores :) ).

Ahora mismo estoy en Madrid, pero raudo cogeré el coche para llegar a tiempo. Así que para los que leáis esto, lo más probable es que me pilléis de camino.

No obstante, os invito a todos a ir esta noche. A partir de las 11 todo el mundo se concentra en la plaza del ayuntamiento y a las 12 es la gran explosión, que dura hasta el día siguiente. Un espectáculo digno de ver si nunca habéis ido, y que pilla a un paso de toda la región (ya que Mula está en el centro, y bien comunicada por autovía desde Murcia y desde Caravaca).

En esta otra web podeis ver el mapa de cómo llegar, y también otra página sobre los tambores, mucho más apasionada.

Os espero esta noche. Por mi parte, yo voy a disfrutar como un niño, y qué ilusión me hace que mi novia me acompañe.

18/3/2005

Más Planet Murcia

Filed under: español, blogging — Diego Sevilla @ 19:24 — In English

Gracias a esta página he podido añadir más Weblogs al Planet Murcia!. ¡¡Bien!! ¡¡Ya decía yo que tenía que haber más webloggeros!! :)

New version of the CCM tutorial

Filed under: CORBA & Component Model (CCM), english — Diego Sevilla @ 1:21 — In English

Douglas C. Schmidt, from Vanderbilt University has updated his tutorial on CORBA Component Model. I haven’t had time to review it, but I’ll do it soon. You can download it here (PPT). Feel free to review it and send him comments/suggestions. I’ll post an update with my impressions on the tutorial when I have the chance to read it.

17/3/2005

Espein is Espein!

Filed under: General, español — Diego Sevilla @ 1:42 — In English

Pues sí. Situación: Esta tarde mientras me acercaba a mi puerta llegaba un joven (13-14 años) y llamaba al telefonillo. Acto seguido una mujer hablaba por él:


- ¿Quién?
- ¿Está Perico?
- ¿Quién eres? –Ojo a esto.
- Soy un amigo suyo… er… lo buscaba para ver si estudiábamos un rato.
- Pues es que se ha ido.
- Ah, vale.

Así somos en España. Ojo a la pregunta tipo “¿Quién eres?” o “¿De parte de quién?” ODIO eso. Además, me parece una falta de respeto. O sea, que la madre del susodicho Perico sabe que su hijo se ha ido pero pregunta para enterarse quién lo busca, haciendo gala de esa curiosidad morbosa que tenemos los españoles. Pero es más… uno malicioso podría pensar que la mujer ha _modificado la respuesta en función de quién era_. No quiera el altísimo…

16/3/2005

WP-Morph en Blgging-Pro

Filed under: español, blogging, código/code — Diego Sevilla @ 14:58 — In English

Pues parece que ha habido también discusión en BloggingPro. La gente pregunta las dos cuestiones principales:

* En qué se diferencia de WP-HashCash (ahí lo explico).
* ¿Qué pasa con los usuarios que tienen JavaScript deshabilitado? No pueden enviar comentarios, básicamente…

A ver qué aceptación tiene. Veré si lo envío al repositorio de plugins de WordPress.

Código fuente de WP-Morph

Filed under: english, español, blogging, código/code — Diego Sevilla @ 0:46 — In English

Aquí os pongo el código fuente del plugin WP-Morph anti-Spam para Wordpress, que se puede descargar aquí. Me gustaría que me contárais qué os parece. Después comentaré los puntos más importantes e interesantes:


<?php // -*- mode: php -*- vim: expandtab ts=8 sw=8
/*
Plugin Name: WP-Morph
Plugin URI: http://wordpress.org/#
Description: Fool spammers by creating a complicated javascript program to be executed by a real browser.
Author: Diego Sevilla Ruiz
Version: 1.0
Author URI: http://neuromancer.dif.um.es/blog
Id: $Id: wp-morph.php 500 2005-03-15 20:39:58Z dsevilla $
*/

/// Put some random value here!!!
// Greater than 0, and less than 1000000
$rnd_val = xxx;
/// Put some random value here!!!

// Check the result through the MD5 sum.
function morph_check_md5($comment) {
    global
$rnd_val;
    
    
// Check the fast check :)
    
if (’spammers_go_home’ == trim(strip_tags($_POST[‘checkpoint’])) )
    {
        
// Check that md5 of check is the same than produced
        
$v = $_POST[‘calc_value’];
        
        
// This value cannot be known by spammers
        
$v += $rnd_val;
        
        
$v = md5($v);
        
        if (
$v == $_POST[‘result_md5′])
        {
            return
$comment;
        }
    }
    
    die(
“Spammer, go home” );
}

add_filter(‘post_comment_text’, ‘morph_check_md5′);

// Output form actions
function morph_output_form_items($page) {
    global
$rnd_val;
    
    
// We have three arrays of random size. Complicated calculus can
    // be made here.
    // 6 to 20 variables
    
$nvars = rand(6,20);
    
$maxval = rand(1000,10000);
    
$vvv = array();
    
    for (
$i = 0 ; $i < $nvars; $i++)
    {
        
$v = rand(1,$maxval - 1);
        
$js_str .= ‘v’ . $i . ‘=’ . $v . ‘;’;
        
$vvv[$i] = $v;
    }
    
    
$nops = rand(3,20);
    for (
$i = 0; $i < $nops; $i++)
    {
        
// Operator
        
$op = rand(0,5);
        
        
// Select two variables and result, random
        
$v1 = rand(0, $nvars - 1);
        
$v2 = rand(0, $nvars - 1);
        
$v3 = rand(0, $nvars - 1);
        
        switch(
$op)
        {
            
// +
            
case ‘0′:
            
$vvv[$v3] = ($vvv[$v1] + $vvv[$v2]) % $maxval;
            
$js_str .= ‘v’.$v3.‘=(v’.$v1
            
. ‘+v’.$v2.‘)%’. $maxval .‘;’;
            break;
            
// -
            
case ‘1′:
            
$vvv[$v3] = ($vvv[$v1] - $vvv[$v2]) % $maxval;
            
$js_str .= ‘v’.$v3.‘=(v’.$v1
            
. ‘-v’.$v2.‘)%’. $maxval .‘;’;
            break;
            
// *
            
case ‘2′:
            
$vvv[$v3] = ($vvv[$v1] * $vvv[$v2]) % $maxval;
            
$js_str .= ‘v’.$v3.‘=(v’.$v1
            
. ‘*v’.$v2.‘)%’. $maxval .‘;’;
            break;
            
            
// if, >
            
case ‘3′:
            
$v4 = rand (1, $maxval - 1);
            
            
$js_str .= ‘if ( v’ . $v1 . ‘ > ‘. $v4 . ‘)
            { v’
. $v2 . ‘ = v’ . $v3 . ‘; }’;
            
            if (
$vvv[$v1] > $v4)
            {
                
$vvv[$v2] = $vvv[$v3];
            }
            break;
            
            
// if, <
            
case ‘4′:
            
$v4 = rand (1, $maxval - 1);
            
            
$js_str .= ‘if ( v’ . $v1 . ‘ < ‘. $v4 . ‘)
            { v’
. $v2 . ‘ = v’ . $v3 . ‘; }’;
            
            if (
$vvv[$v1] < $v4)
            {
                
$vvv[$v2] = $vvv[$v3];
            }
            break;
            
            
// while
            
case ‘5′:
            
$v4 = rand (1, 100);
            
            
// Quick and dirty check
            
if ($v1 == $v2)
            break;
            
            
$js_str .= ‘v’. $v1 .‘=Math.abs(v’.$v1.‘);
            v’
. $v1 .‘%=’. $v4 .‘; while (v’.$v1.‘–) {
            v’
. $v2.‘++; }’;
            
            
// Calc the final value
            
$vvv[$v1] = abs ($vvv[$v1]);
            
$vvv[$v2] += $vvv[$v1] % $v4;
            
$vvv[$v1] = -1;
            break;
        }
        
    }
    
    
$final_val = 0;
    
    
$js_str .= “eElement.value = (”;
    for (
$i = 0 ; $i < $nvars; $i++)
    {
        if (
$i != 0)
        {
            
$js_str .= ‘+’;
        }
        
$js_str .= ‘v’ . $i;
        
$final_val += $vvv[$i];
    }
    
    
    
$js_str .= ‘)%’. $maxval.‘;’;
    
    
$final_val %= $maxval;
    
    
//$js_str .= ‘// ‘.$final_val;
    
    // Add the secret quantity
    
$final_val += $rnd_val;
    
    
// Calc the md5 of the value
    
$md5_value = md5($final_val);
    
    
// Write in hidden field
    
$page = str_replace(‘<input type=”hidden” name=”comment_post_ID”‘,
    
‘<input type=”hidden” name=”checkpoint” value=”spammers_go_home” />
    <input type=”hidden” name=”result_md5″ value=”‘
    
. $md5_value . ‘” />
    <input type=”hidden” id=”chk” name=”calc_value” value=”" />
    <input type=”hidden” name=”comment_post_ID”‘
, $page);
    
    
// The form action
    
$page = str_replace(‘<form’,
    
‘<form onsubmit=”go_anti_spam();” ‘,
    
$page);
    
    
// The jscript
    
$page = str_replace(‘</head>’, ‘<script type=”text/javascript”>
    
    function go_anti_spam()
    {
        eElement = document.getElementById(”chk”);
        if(!eElement){ return false; }
        else
        {
            ’
.$js_str.
            return true;
        }
    }</script></head>’
, $page);
    
    return
$page;
}

function morph_call_output_items() {
    
ob_start(‘morph_output_form_items’);
}

// Now we set that function up to execute when the wp_head action is called
add_action(‘wp_head’, ‘morph_call_output_items’);

?>

15/3/2005

WP-Morph 1.0

Filed under: english, español, blogging, código/code — Diego Sevilla @ 21:33 — In English

*Nueva versión 1.1 aquí.*
*New version 1.1 here.*

(English version below)

WP-Morph es un plugin anti-spam para WordPress. Características:

* No requiere de ningún “capcha”. El usuario no tiene que introducir ningún código extraño ni se entera de nada del proceso
* Se requiere JavaScript en el browser.
* Los Spammers tendrían que interpretar el código JavaScript de la página para poder enviar comentarios. Hasta ahroa no conozco a ningún programa spammer que haya sido capaz de interpretar también el código JavaScript de la página.

Instalación
———–

* Descarga el fichero ZIP wp-morph.zip y descomprímelo.
* Edita las líneas siguientes de wp-morph.php y pon un número al azar. Es importante que ese número sea diferente, ya que será el secreto de tu sitio web que los spammers no sabrán:


/// Put some random value here!!!
// Greater than 0, and less than 1000000
$rnd_val = xxx;
/// Put some random value here!!!

* Copia wp-morph.php en el directorio de plugins de WordPress (normalmente WP-ROOT/wp-content/plugins/).
* Ve al menú “Plugins” de la administración de WordPress.
* Activa el plugin “WP-Morph”.

¡¡Y ya está!! ¡¡Adios spam!!

Si tienes alguna pregunta/comentario/cuestión, no dudes en contactar conmigo.

English version:

WP-Morph is an anti-spam plugin for WordPress. Features:

* No capcha. The user don’t have to enter any additional code.
* JavaScript support required in the browser.
* Spammers would have to interpret the JavaScript in the page to be able to submit comments. As far as I know, no one spammer in the world process a page including the JavaScript.

Installation
————

* Download and decompress the ZIP file wp-morph.zip.
* Edit the following lines (in wp-morph.php) to put a random value of your own:


/// Put some random value here!!!
// Greater than 0, and less than 1000000
$rnd_val = xxx;
/// Put some random value here!!!

* Copy wp-morph.php in the WordPress plugin directory (normally WP-ROOT/wp-content/plugins/).
* Go to the “Plugins” menu of the WordPress Admin console.
* Activate the “WP-Morph” plugin.

That’s it!! Bye, bye, spam!!

If you have questions/comments, please contact me.

Ahora sí, el Anti-Spam definitivo para WordPress: WP-Morph

Filed under: español, blogging — Diego Sevilla @ 2:33 — In English

Pues sí… Si sois curiosos y mirais al código fuente de la página descubriréis que he añadido cierto código JavaScript con muy mala leche para luchar contra los spammers. Ventaja: Ahora sí que no se me van a colar, y sigue sin hacer falta poner ningún campo adicional. Desventaja: Necesita JavaScript. ¿Es eso un problema? Realmente no lo tengo claro, por favor, ¿comentarios?

Hoy es muy tarde. Ya mañana explicaré qué he hecho y cómo permite eliminar los spammers. He utilizado como ejemplo el plugin “WP-Hashcash“, aunque este, os lo aseguro, es mucho más simple y no hace falta modificar nada de Wordpress: sólo instalar el plugin en el directorio de plugins y activarlo.

Next Page »

Creative Commons License
This work is licensed under a Creative Commons License.
EWWV  AWStats  Site Meter 24 queries. 0.145 seconds. Powered by WordPress
406021 email messages processed in this box. 10858 were spam

0