forum phpBB hack

Suite à mon billet sur ma solution maison contre le spam phpBB, j’ai eu certains commentaires de mes confrères Webmaster comme quoi que la solution ne pouvait pas s’appliquer à leur forum car il acceptait les commentaires «Invité» sur son forum…

Personnellement, je n’ai jamais accepté les commentaires invité sur mes forums car je trouvais que ça ouvrait la boîte de Pandore pour un méchant paquet de cochonnerie… mais ce Webmaster que je respecte beaucoup avait l’air à dire que d’allouer les invités sur son forum stimulait grandement les réponses!

Étant donné que comme tout Webmaster digne de ce nom, j’aime bien stimuler les réponses aux sujets… J’ai décidé que s’il fallait stimuler et bien j’allais stimuler… et sans cochonnerie MERCI!

Première étape :
Je vais vous épargner les détails car vous êtes des grands garçons… Cela consiste à ajuster les permissions de vos forums à «Public»

Deuxième étape :
Modifier le fichier includes/functions_post.php
Vers la ligne 216, vous devriez voir un bout de code ressemblant à ceci.

function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, $post_username, $post_subject, $post_message, $poll_title, &$poll_options, &$poll_length)
{

Maintenant, il suffit d’ajouter ce bout de code en dessous du {

if ($_GET['jcheck']!=’mspam’) {
message_die(GENERAL_MESSAGE, ‘Votre navigateur a été détecter comme spam. Veuillez contacter l\’administrateur du forum s\’il s\’agit d\’un erreur.’, ”, __LINE__, __FILE__);
}

Troisième étape :
Modifier le fichier templates/nom_du_template/posting_body.tpl

J’ai baptisé la première partie de la modification de posting_body.tpl, «Pousse pas ta luck!»… En fait, elle empêche l’invité de poster comme invité. Il devrait absolument donner se donner un pseudonyme avant d’écrire son message.

Donc, vers la ligne 75 vous devriez trouver un bout de code ressemblant étrangement à ceci :

function checkForm() {
formErrors = false;

Ajoutez en DESSOUS,

<!-- BEGIN switch_username_select -->
if (document.post.username.value.length < 3) {
formErrors = “Vous devez spécifier un nom d’usager avant de publier votre message. Il est préférable de se créer un compte avant de publier vos textes. Regardez dans le coin droit de l’écran pour le bouton «S’enregistrer».”;
}
<!– END switch_username_select –>

Maintenant, toujours dans le fichier posting_body.tpl, ajouter le code JavaScript suivant, essentiel à l’anti-spam et que les robots ne pourront détecter.

function postDetect() {
window.document.getElementById(’myformposting’).action = window.document.getElementById(’myformposting’).action+’?jcheck=mspam’;
}

Toujours dans le même posting_body.tpl
Effectuer une recherche pour vous retrouvez vers cette ligne :

<form action="{S_POST_ACTION}" method="post" name="post"

Remplacez le code HTML de la balise <form> par celui-ci.

<form action="{S_POST_ACTION}" method="post" name="post" id="myformposting" onsubmit="return checkForm(this)">

La dernière étape :
Toujours au sein du fichier posting_body.tpl

Effectuer une recherche pour le code suivant..

<input type="submit"

Et remplacer le code HTML des deux boutons (Prévisualiser, et publier) par ceci :

<input type="submit" tabindex="5" name="preview" class="mainoption" value="{L_PREVIEW}" onclick="postDetect();" /> <input type="submit" accesskey="s" tabindex="6" name="post" class="mainoption" value="{L_SUBMIT}" onclick="postDetect();" />

À partir d’aujourd’hui, vous devriez avoir un forum phpBB à l’abris des spammeurs, qui accepte les usagers «Invité» tout en les forcant à se donner un pseudonyme avant la publication de leurs messages.

Merci!

- Matt