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:
  1. $hostname_nospam = $dbhost;
  2. $database_nospam = $dbname;
  3. $username_nospam = $dbuser;
  4. $password_nospam = $dbpasswd;
  5. // 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.
  6. $nospam = mysql_pconnect($hostname_nospam, $username_nospam, $password_nospam) or trigger_error(mysql_error(),E_USER_ERROR);
  7. $sql_nospam="Select * from phpbb_users Where user_active='0' and user_id <>'-1'";
  8. $result=mysql_db_query($database_nospam, $sql_nospam);
  9. $time=time() - (1 * 24 * 60 * 60);
  10. // por ejemplo, (2 * 24 * 60 * 60), para esperar 2 días para borrar el usuario sin validar
  11. while ($row=mysql_fetch_array($result)) {
  12. if($row['user_regdate']<=$time){
  13. $deleteSQL ="DELETE FROM phpbb_users WHERE user_id='".$row['user_id']."'";
  14. mysql_select_db($database_nospam, $nospam);
  15. $Result1 = mysql_query($deleteSQL, $nospam) or die(mysql_error());
  16. }
  17. }

Puede agregarse el código en el index.php al final de todo, antes de:

PHP:
  1. //
  2. // Generate the page
  3. //
  4. $template->pparse('body');


Posts relacionados:
  • La fuerza del verbo (0)
  • SPAM (monty python y los vikingos) (0)
  • El cortador de césped (0)
  • Art&Deco – Tienda online de Arte y Decoración (0)
  • Un mundo animado (0)

  • TAGS: ( , , )