Combatir el Spam en los foros de php nuke (phpBB)


En nuestra página dedicada a Aion: www.aion-fansite.com , estamos teniendo un problema con el spam en los foros. Pues bueno os voy a contar la solución que hemos implementado:

  1. Banear las Ips de los spammers (pobre resultado, ya que sueles ser Bots o máquinas, las que se dedican a ello de forma automática y cambian las ips).
  2. La mejor forma de evitar los Bots, es poner un gráfico con un texto, el cual tiene que ser repetido en su correspondiente campo. A esta técnica se le llama Captcha.
  3. No encuentro ningún mod que sirva para tal efecto y decido crearlo manualmente.
  4. En  http://blog.unijimpe.net/captcha-con-php-y-jpgraph/ , encuentro un excelente artículo, en donde explica como implementar un sistema Captcha propio, usando php. Pues basándome en este artículo realizo mis propias modificaciones en php nuke. Visitar el enlace y descargar los ejemplos.
    • Dentro de la carpeta: \html\modules\Your_Account\  de Php Nuke, vamos a copiar el fichero captcha.php  y la biblioteca JpGraph, en la carpeta Inc .
    • Luego hay que  modificar el fichero index.php: buscar en este fichero la función: confirmNewUser e incluir estas líneas:

      function
      confirmNewUser($username, $user_email, $user_password, $user_password2, $random_num, $gfx_check) {
       global $stop, $EditedMessage, $sitename, $module_name, $minpass;
       include(“header.php”);
       include(“config.php”);
       $username = filter($username, “nohtml”);
       $user_email = filter($user_email, “nohtml”);
       $user_viewemail = “0”;
       userCheck($username, $user_email);
       $user_email = validate_mail($user_email);
       $user_password = htmlspecialchars(stripslashes($user_password));
       $user_password2 = htmlspecialchars(stripslashes($user_password2));
       
       // INSERCION VERIFICACION CAPTCHA ——————————
       session_start();
          if ($_SESSION[‘tmptxt’] == $_POST[‘tmptxt’]) {
              echo “Bienvenido “.$_POST[‘nombres’];
          } else {
               title(“”._NEWUSERERROR.“”);
         OpenTable();
         echo “<center> Error: CODIGO DE VERIFICACION INVALIDO <br><br>”._GOBACK.“</center>”;
         CloseTable();
         include(“footer.php”);
         die();
          }
       //————–FIN CODIGO ————————————————-

    (continua el codigo original …….)

    • Una vez insertado el código anterior buscar la función: function new_user() e insertar el siguiente código:

function new_user() {
 global $my_headlines, $module_name, $db, $gfx_chk, $user;
 if (!is_user($user)) {
  mt_srand ((double)microtime()*1000000);
  $maxran = 1000000;
  $random_num = mt_rand(0, $maxran);
  include(“header.php”);
  OpenTable();
  echo “<center><font class=\”title\”><b>”._USERREGLOGIN.”</b></font></center>\n”;
  CloseTable();
  echo “<br>\n”;
  OpenTable();
  echo “<form action=\”modules.php?name=$module_name\” method=\”post\”>\n”
  .”<b>”
._REGNEWUSER.“</b> (“._ALLREQUIRED.”)<br><br>\n”
  .“<table cellpadding=\”0\” cellspacing=\”10\” border=\”0\”>\n”
  .“<tr><td>”._NICKNAME.”:</td><td><input type=\”text\” name=\”username\” size=\”30\” maxlength=\”25\”></td></tr>\n”
  
  // INSERCION CAPTCHA ——————————————
  .“<tr><td> Código: </td><td><img src=\”/modules/Your_Account/captcha.php\” width=\”100\” height=\”30\”></td></tr>\n”
  .“<tr><td> Código Verificación: </td><td><input name=\”tmptxt\” type=\”text\” id=\”tmptxt\”></td></tr>\n”
  // FIN INSERCION ———————————————-

(continua el codigo original …….)

Pues con estas dos modificaciones ya lo tenemos resuelto:

Registro Aion

 Aparece una imagen con una combinación de número y letras, la cual se tendrá que verificar para poder darse de alta.