Le spam est partout, y compris sur les forums. Les différentes méthodes antispam se complexifient à mesure que les robots spammeurs arrivent à les surmonter!
Une solution simple et efficace, interdire les liens de type http:// ou https:// dans les messages, mais aussi dans le profil :)
Un grand merci à Haypo pour cette brillante idée !
Voici le patch correspondant pour phpBB :
Premier fichier : posting.php
. On interdit ici de poster un message dont le sujet ou le message en lui-même contient http://
ou https://
. On interdit également de poster si l’un des champs de localisation, d’emploi, de loisirs, de signature et même de site web du profil de l’utilisateur contient http://
ou https://
.
--- posting.php.old 2007-01-16 14:55:06.000000000 +0100
+++ posting.php 2007-01-16 16:38:19.000000000 +0100
@@ -555,8 +555,56 @@
$poll_length = ( isset($HTTP_POST_VARS['poll_length']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_length'] : '';
$bbcode_uid = '';
+ // ANTI-SPAM LILOLIPO...
+ // Pas de http dans le message...
+ if (
+ strstr($username, "http://") !== false
+ || strstr($subject, "http://") !== false
+ || strstr($message, "http://") !== false
+ || strstr($username, "https://") !== false
+ || strstr($subject, "https://") !== false
+ || strstr($message, "https://") !== false
+ )
+ {
+ $error_msg = 'Sujets ou messages contenant "http://" ou "https://" interdits. '.
+ 'Si vous n\\'etes pas un robot, supprimez simplement '.
+ '"http://" et "https://" de vos liens ;-)';
+ break;
+ }
+ // on verifie l'absence de http dans le site du profil de l'utilisateur
+ if ($userdata['session_logged_in'])
+ {
+ $sql = "SELECT user_website, user_from, user_occ, user_interests, user_sig FROM " . USERS_TABLE . " WHERE user_id = ".$userdata['user_id'];
+
+ if ( !($result = $db->sql_query($sql)) )
+ {
+ message_die(GENERAL_ERROR, 'Could not obtain user\\'s website information', '', __LINE__, __FILE__, $sql);
+ }
+ if ( $row = $db->sql_fetchrow($result) )
+ {
+ if (strstr($row['user_website'], "http://") !== false
+ || strstr($row['user_website'], "https://") !== false
+ || strstr($row['user_from'], "http://") !== false
+ || strstr($row['user_from'], "https://") !== false
+ || strstr($row['user_occ'], "http://") !== false
+ || strstr($row['user_occ'], "https://") !== false
+ || strstr($row['user_interests'], "http://") !== false
+ || strstr($row['user_interests'], "https://") !== false
+ || strstr($row['user_sig'], "http://") !== false
+ || strstr($row['user_sig'], "https://") !== false
+ )
+ {
+ $error_msg = 'Profils contenant "http://" ou "https://" interdits. '.
+ 'Si vous n\\'etes pas un robot, supprimez simplement '.
+ '"http://" et "https://" de votre site web, localisation, signature, emploi, ... de votre profil ;-)';
+ break;
+ }
+ }
+ }
prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);
if ( $error_msg == '' )
{
$topic_type = ( $topic_type != $post_data['topic_type'] && !$is_auth['auth_sticky'] && !$is_auth['auth_announce'] ) ? $post_data['topic_type'] : $topic_type;
@@ -1116,4 +1164,4 @@
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
Deuxième fichier : includes/usercp_register.php
. On interdit l’inscription d’utilisateur qui ont rempli le champ Site internet de leur profil.
--- includes/usercp_register.php.old 2007-01-16 16:40:04.000000000 +0100
+++ includes/usercp_register.php 2007-01-16 17:06:09.000000000 +0100
@@ -447,7 +447,9 @@
if ( $website != '' )
{
- rawurlencode($website);
+ $error = true;
+ $error_msg = "Pour lutter contre les robots spammeurs, il est interdit de remplir le champ " . $lang['Website'];
+ // rawurlencode($website);
}
$avatar_sql = '';