Categorías
cibercultura

Cómo combatir el spam en phpBB

Todo administrador de un foro más o menos popular que corra bajo phpBB estará padeciendo por estos días una oleada de spam. Mensajes de spambots van copando el lugar donde hasta entonces discutían humanos.

La comunidad de phpBB ofrece tres grandes tópicos sobre el tema (1, 2 y 3) que confunden más de lo que orientan.

Pero ayer se publicó un mensaje que propone una solución eficaz y sencilla que no exige captchas (los codiguitos de letras y números para verificar que se trata de un ser humano y no de un robot) ni otros complejos sistemas de verificación. Y, a ojos del usuario final, nada cambia. Lo testeé y (hasta que los spammers le encuentren la vuelta) funciona. Vale la pena implementarlo por el poco esfuerzo que exige:

1. Edite la plantilla ubicada en
templates/su_estilo/posting_body.tpl. Busque la etiqueta «form» y agregue enctype=»multipart/form-data» como se muestra acá:

<form action=»{S_POST_ACTION}» method=»post» name=»post» onsubmit=»return checkForm(this)» enctype=»multipart/form-data»>

2. Edite el archivo posting.php alrededor de la línea 560, agregando lo que figura en negrita:

switch ( $mode )
{
case 'editpost':
case 'newtopic':
case 'reply':
$username = ( !empty($HTTP_POST_VARS['username']) ) ? $HTTP_POST_VARS['username'] : '';
$subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';
$message = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';
$poll_title = ( isset($HTTP_POST_VARS['poll_title']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_title'] : '';
$poll_options = ( isset($HTTP_POST_VARS['poll_option_text']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_option_text'] : '';
$poll_length = ( isset($HTTP_POST_VARS['poll_length']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_length'] : '';
$bbcode_uid = ''; if(!eregi('^multipart/form\-data',trim($_SERVER['CONTENT_TYPE'])))
{
echo "No se acepta spam. Tómeselas.";
exit();
}
prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);

¡Listo! Sólo resta subir los dos archivos al servidor.