[Solución] Ocultar bots y spiders en phpbb3

Ya traigo la solución para poder ocultar los bots en los foros phpbb3 de forma que no se vean cuándo están conectados (me refiero a Google Adsense , Google , Yahoo ,...)
Lo que vamos a hacer es que no aparezcan en la lista de conectados pero que se puedan seguir conectando, ya que que aparezcan en la lista se hace muy pesado por ejemplo en el caso de adsense.
A mí me dieron la solución en el foro oficial de phpbb: http://www.phpbb.com/community/viewtopic.php?f=46&t=858595&st=0&sk=…
Pero yo os lo voy a resumir aquí.



Abrid el archivo includes/functions.php

:arrow: Primero buscad ahí las líneas que dicen:
$user_online_link = get_username_string(($row['user_type'] <> USER_IGNORE) ? 'full' : 'no_profile', $row['user_id'], $row['username'], $row['user_colour']);
                            $online_userlist .= ($online_userlist != '') ? ', ' . $user_online_link : $user_online_link;

y sustituidlas por:
if ($row['user_type'] <> USER_IGNORE)
                            {
                            $user_online_link = get_username_string(($row['user_type'] <> USER_IGNORE) ? 'full' : 'no_profile', $row['user_id'], $row['username'], $row['user_colour']);
                            $online_userlist .= ($online_userlist != '') ? ', ' . $user_online_link : $user_online_link;
                            }
                            else 
                            {
                                $user_online_link = '';
                                $online_userlist .= '';
                            }


Con eso no aparece en la lista, pero en el número de usuarios conectados les sigue contando, lo que queda raro. La solución a esto sólo la podreis hacer si teneis la versión 3.0.1 o posterior, haciendo lo siguiente:
:arrow: Buscad en el mismo archivo este código:
$sql = 'SELECT s.session_user_id, s.session_ip, s.session_viewonline
      FROM ' . SESSIONS_TABLE . ' s
      WHERE s.session_time >= ' . ($time - ((int) ($time % 30))) .
         $reading_sql .
      ' AND s.session_user_id <> ' . ANONYMOUS;
   $result = $db->sql_query($sql, 30);

y sustituidlo por:
$sql = 'SELECT s.session_user_id, s.session_ip, s.session_viewonline, u.user_type
      FROM ' . SESSIONS_TABLE . ' s
      LEFT JOIN ' . USERS_TABLE . ' u ON s.session_user_id = u.user_id
      WHERE s.session_time >= ' . ($time - ((int) ($time % 30))) .
         $reading_sql .
      ' AND s.session_user_id <> ' . ANONYMOUS;
   $result = $db->sql_query($sql, 30);

:arrow: Buscad también este código:
if ($row['session_viewonline'])
         {
            $online_users['visible_online']++;
         }
         else
         {
            $online_users['hidden_users'][$row['session_user_id']] = (int) $row['session_user_id'];
            $online_users['hidden_online']++;
         }

y sustituidlo por:
if ($row['session_viewonline'] && $row['user_type'] <> USER_IGNORE)
         {
            $online_users['visible_online']++;
         }
         else
         {
            $online_users['hidden_users'][$row['session_user_id']] = (int) $row['session_user_id'];
            $online_users['hidden_online']++;
         }

Con eso el problema estará solucionado, y funciona perfectamente.
Espero que os sirva.
Saludos :wink:
He copiado el texto en el edit pad para que lo busque y lo sustituya pero no encuentra la línea de código.

Puede ser por que no tenemos la misma versión?