Estúpidos Robots!



SOLUCIÓN PARA QUE NO SE ACUMULEN USUARIOS CON EL EMAIL SIN VALIDAR EN LOS FOROS PHPBB

Harto del spam en los foros phpBB que instalo a mis clientes, le he estado dando vueltas y vueltas a una solución.

Lo primero, claro está, es activar la verificación por email de las cuentas, y poner el módulo del captcha (código aleatorio como imagen de verificación).

Sin embargo, los módulos oficiales poco tienen que hacer contra los robots. Cuando un módulo de control de spam se populariza, los programadores “malignos” se ponen manos a la obra a desarrollar como saltárselo. Mediante aplicaciones de lectura tipo OCR, las letras y números aleatorios, ni que se encuentren dentro de una imagen y no como texto, ya no son una barrera eficaz.

Se me ocurrió que, a pesar que un programa puede llegar a tener capacidades “técnicas” y de cálculo muy superiores a las de un humano, es básicamente estúpido, no puede ni por asomo llegar a comprender conceptos. ¿Porque no hacer un captcha para entes inteligentes? Donde se formulen preguntas muy sencillas para una persona, pero imposibles de discernir para una máquina.

capimg.jpg

Habría que crear una base de datos de imágenes y preguntas remota, que aumentara y se modificara con el transcurso del tiempo. (…) Era una buena idea, no hay duda, pero debía encontrar una solución rápida, lo del captcha inteligente es un proyecto que dejo para más adelante.

Los bots van agregando usuarios sin validar en nuestra base de datos, y aunque pongamos que no se muestren, están ahí, ocupando espacio y hasta estropeando el resto de datos. Nos encontraremos con bases de datos sin casi posts de usuarios pero con 12.000 usuarios agregados, que nos ocuparán varios mb. Además, borrarlos uno a uno, o a través de la administración es muy pesado.

Así que al final cree un script para que eliminase los usuarios que hubieran quedado sin verificar pasado un día, de esta forma la acumulación de usuarios queda regulada, y podemos despreocuparnos.

[PHP] $hostname_nospam = $dbhost;
$database_nospam = $dbname;
$username_nospam = $dbuser;
$password_nospam = $dbpasswd;
// Esta parte podría sistetizarse, pues estamos duplicando variables. Sin embargo, así es como lo puse para realizar las pruebas. Si alguien le apetece que lo limpie.
$nospam = mysql_pconnect($hostname_nospam, $username_nospam, $password_nospam) or trigger_error(mysql_error(),E_USER_ERROR);
$sql_nospam=”Select * from phpbb_users Where user_active=’0′ and user_id <>‘-1′”;
$result=mysql_db_query($database_nospam, $sql_nospam);
$time=time() – (1 * 24 * 60 * 60);
// por ejemplo, (2 * 24 * 60 * 60), para esperar 2 días para borrar el usuario sin validar
while ($row=mysql_fetch_array($result)) {
if($row[‘user_regdate’]<=$time){ $deleteSQL ="DELETE FROM phpbb_users WHERE user_id='".$row['user_id']."'"; mysql_select_db($database_nospam, $nospam); $Result1 = mysql_query($deleteSQL, $nospam) or die(mysql_error()); } } [/PHP] Puede agregarse el código en el index.php al final de todo, antes de: [PHP] // // Generate the page // $template->pparse(‘body’);

[/PHP]


Artículos relacionados:


Comentarios: (2)

2 thoughts on “Estúpidos Robots!

  1. Hola, pegué en mi index.php el codigo igual como lo pusiste, y no me dejó entrar! marcó un mensaje de error, me asusté y no tome nota del error, sorry algo en la linea 473, no tengo experiencia en programación y asumo que algo hice mal.

    Me interesa mucho insertar este código por que en mi foro se registran a veces 2 3 veces pro que no revisan su carpeta de correo no deseado, y no ven el mensaje de verificación, así que em sería muy útil apra todos esos usuarios inactivos, masl los robots pro supuesto

    ojalá puedas ayudarme, mil gracias de antemano

  2. Hola,
    puede ser que haya algo diferente en tu foro, por ejemplo que la tabla de la base de datos se llame diferente (el prefijo no sea phpbb_) o cualquier otra tontería. Claro que para solucionarlo habría primero que ver el mensaje de error. Si quieres, mándame el index.php, te lo modifico, y en caso de error me remites de que se trata y lo solucionamos.
    Este script es genérico, y claro, si existen diferencias hay que modificarlo en cada caso.

Leave a Reply

Your email address will not be published. Required fields are marked *