OUTIL DE SUPRESSION DE SPAM INTEGRÉ À PHPBB

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 7 nov. 2006 à 13:05
marek_wit Messages postés 14 Date d'inscription dimanche 7 août 2005 Statut Membre Dernière intervention 23 mars 2009 - 23 mars 2009 à 23:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40227-outil-de-supression-de-spam-integre-a-phpbb

marek_wit Messages postés 14 Date d'inscription dimanche 7 août 2005 Statut Membre Dernière intervention 23 mars 2009
23 mars 2009 à 23:35
Bonne soir!

Esque il existe des codes html, que je puisse écrire une news et ensuit, avoir une fonction admin, pour efface le news ..

Mais, sans passer par la base SQL ... Merci 1000 fois!!!! c pour l'ecole ...
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
22 nov. 2006 à 17:29
De toute façon je voie pas l'avantage d'utiliser $HTTP_POST_VARS meme si phpbb fait un traitement dessus ( je crois que phpbb fait ses propres magic quote dessus )
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
15 nov. 2006 à 11:13
moi je dis souvent "si ça ne fonctionne pas, la faute est a celui qui n'est pas a jour"
pas de debat =)
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
15 nov. 2006 à 10:31
Parce que ça existe encore un serveur qui tourne sous php 3... lol... j'en doute... sachant que les tableaux super globaux $_* ont étés introduit dans la version 4.1.0 et que la version minimum de php requise par phpbb est php 4.0.3... c'est un choix stratégique que je ne remet pas en cause mais que je ne trouve pas justifié... après c'est la même chose pour beaucoups de gros script... on a eu la même prise de tête avec xoops et on l'a encore... .. .

@ tchaOo°
Oyodarkenshin Messages postés 8 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 novembre 2006
14 nov. 2006 à 19:09
hum c'est pour garder une rétrocompatibilité avec php 4 et < ;)
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
13 nov. 2006 à 18:47
Oui j'imagine... mais à ce moment là autant utiliser directement $_POST... le traitement fait dans common.php est là pour palier aux mauvaises habitudes de codage en attendant la réécriture du core... c'est pareil pour beaucoups de CMS comptant plusieurs milliers de lignes de code... mais ça ne dispense pas d'utiliser $_POST... .. . ;o)

@ tchaOo°
Oyodarkenshin Messages postés 8 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 novembre 2006
13 nov. 2006 à 18:29
Oui mais non, enfaite phpBB utilise $HTTP_*_VARS car il font en traitement dessus dans common.php.
De plus, au début il déclare que

$HTTP_*_VARS = $_*;

Voila ;)
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
13 nov. 2006 à 12:57
Inutile de parler du niveau de cette source d'autres l'ont déja fait... cependant moi un truc qui me fait bondir c'est quand je vois...

"phpBB utlise $HTTP_POST_VARS et non $_POST"

Inutile (peut être pas) de rappeler que $HTTP_POST_VARS est déprécié et qu'il faut utiliser $_POST... y en a qui vont faire la gueule quand php6 va sortir... .. .

@ tchaOo°
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
8 nov. 2006 à 14:53
iow4 : comme le signale coucou, merci de faire baisser le niveau de la source vers "debutant" plutot que "expert"
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 nov. 2006 à 14:41
J'ai pas dit qu'il était pas utile... mais en vennant ici, pour un code expert, j'aurais au moins aimé trouver un réseau bayesien...
cf http://fr.wikipedia.org/wiki/Inf%C3%A9rence_bay%C3%A9sienne

pour détecter les spams, insumltes, floood, [...] automatiquement.
Oyodarkenshin Messages postés 8 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 novembre 2006
7 nov. 2006 à 23:05
Non normalement le 2eme code donnée est au normes ;)

tu peux simplement ne pas inclure page_header et page_tail ;)
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
7 nov. 2006 à 22:36
Ok je vais modifier mon code alors :

- Changement de $_POST en $HTTP_POST_VARS
- Utilisation de constantes pour le nom des tables

Pour ceux qui est de l'affichage graphique de phpbb ce n'est pas le but de la source donc une simple redirection suffira

as tu d'autres suggestions ??
merci
Oyodarkenshin Messages postés 8 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 novembre 2006
7 nov. 2006 à 20:32
oui et non, mais c'est la base de fonctionnement de phpBB.
Sachant pas la même occa's (si je peux me permettre) que c'est dans ce fichier qu'il traite toutes les super globals.

Mais bon après à toi de voir mais dans ce cas ne dit pas que "Ce code est complètement intégrable à phpBB" puisqu'il n'utilise pas les normes de phpBB ;)
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
7 nov. 2006 à 19:53
Le fichier common.php n'est pas très legé, autant s'en passer
non ?
Oyodarkenshin Messages postés 8 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 novembre 2006
7 nov. 2006 à 18:58
Quand je dis "bouh !" il ne faut pas le prendre mal ;)

Arf oups! je me suis planté dans le code voila le bon code, forcement j'utilisais pas les constantes défini dans le fichier constants.php inclus dans le fichier common.php (tout comme config.php, includes/db.php)
<?php
//////////////////////////////////////////////////////
//
// RemoveSpam By Thomas K ( http://iow4.net )
//
/////////////////////////////////////////////////////

define('IN_PHPBB', true);

$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

// Start session management
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
// End session management

//================================================
// 1er Vérification du parametre contenant l'id du post
//================================================

if (empty($HTTP_POST_VARS['post_id']))
{
message_die(GENERAL_ERROR, 'Erreur : Parametre post_id requis');
}

//===================================================
// 2eme Vérification du parametre contenant l'id du post
//if (!($topic_info $db->sql_fetchrow($db->sql_query('SELECT * FROM '.POSTS_TABLE.' WHERE post_id=\''.$_POST['post_id'].'\''))))
{
message_die(GENERAL_ERROR, 'Erreur : Parametre post_id errone');
}

//====================================================
// On met l'user qui a posté dans la liste de bannis
//====================================================

if (!$db->sql_query('INSERT INTO '.BANLIST_TABLE." VALUES('','".$topic_info['poster_id']."','".$topic_info['poster_ip']."','') "))
{
message_die(GENERAL_ERROR, 'Erreur : Insertion de l\'utilisateur dans la banlist impossible');
}

//==========================
// On desactive son compte
//==========================

if (!$db->sql_query('UPDATE '.USERS_TABLE.' SET user_active=\'0\' WHERE user_id=\''.$topic_info['poster_id'].'\''))
{
message_die(GENERAL_ERROR, 'Erreur : Desactivation du compte spammeur impossible');
}

//=================================
// On suprime le message SPAM
//=================================

if (!($db->sql_query('DELETE FROM '.POSTS_TABLE.' WHERE post_id=\''.$_POST['post_id'].'\'')) OR !($db->sql_query('DELETE FROM '.$table_prefix."posts_text WHERE post_id='".$_POST['post_id']."'")))
{
message_die(GENERAL_ERROR, 'Erreur : Supression du message SPAM impossible');
}

//=================================
// redirection
//=================================

redirect(append_sid('index.'.$phpEx, true));

// Start output of page
$page_title = 'Outil de suppression de SPAM ~ PphpBB';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
Oyodarkenshin Messages postés 8 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 novembre 2006
7 nov. 2006 à 18:53
header("location:$phpbb_root_path"); -> bouh !
$_POST -> pas standard en phpBB

phpBB a créé une fonction redirect($url);
phpBB utlise $HTTP_POST_VARS et non $_POST

Il n'est pas totalement intégré à phpBB voila quelque chose d'intégré:
<?php
//////////////////////////////////////////////////////
//
// RemoveSpam By Thomas K ( http://iow4.net )
//
/////////////////////////////////////////////////////

define('IN_PHPBB', true);

$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

// Start session management
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
// End session management

//================================================
// 1er Vérification du parametre contenant l'id du post
//================================================

if (empty($HTTP_POST_VARS['post_id']))
{
message_die(GENERAL_ERROR, 'Erreur : Parametre post_id requis');
}

//===================================================
// 2eme Vérification du parametre contenant l'id du post
//if (!($topic_info $db->sql_fetchrow($db->sql_query('SELECT * FROM '.$table_prefix.'posts WHERE post_id=\''.$_POST['post_id'].'\''))))
{
message_die(GENERAL_ERROR, 'Erreur : Parametre post_id errone');
}

//====================================================
// On met l'user qui a posté dans la liste de bannis
//====================================================

if (!$db->sql_query('INSERT INTO '.$table_prefix."banlist VALUES('','".$topic_info['poster_id']."','".$topic_info['poster_ip']."','') "))
{
message_die(GENERAL_ERROR, 'Erreur : Insertion de l\'utilisateur dans la banlist impossible');
}

//==========================
// On desactive son compte
//==========================

if (!$db->sql_query('UPDATE '.$table_prefix.'users SET user_active=\'0\' WHERE user_id=\''.$topic_info['poster_id'].'\''))
{
message_die(GENERAL_ERROR, 'Erreur : Desactivation du compte spammeur impossible');
}

//=================================
// On suprime le message SPAM
//=================================

if (!($db->sql_query('DELETE FROM '.$table_prefix.'posts WHERE post_id=\''.$_POST['post_id'].'\'')) OR !($db->sql_query('DELETE FROM '.$table_prefix."posts_text WHERE post_id='".$_POST['post_id']."'")))
{
message_die(GENERAL_ERROR, 'Erreur : Supression du message SPAM impossible');
}

//=================================
// redirection
//=================================

redirect(append_sid('index.'.$phpEx, true));

// Start output of page
$page_title = 'Outil de suppression de SPAM ~ PphpBB';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
7 nov. 2006 à 17:49
rou non ! Ca suprime le message, ajoute le posteur à la banlist et desactive le compte du posteur !

En plus c'est un exemple d'intégration de script à Phpbb car j'implemente leur classe d'exploitation de SGBD ( donc compatible avec toutes les bdd reconnut par Phpbb ) j'utilise aussi leur systeme de nom de fichier variable.

J'ai codé ce script car je trouve ça utile de pouvoir faire 3 action en cliquant sur un bouton quand le spam à reussie à s'infiltrer sur le forum
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 nov. 2006 à 13:05
?? et ?? en quoi c'est un truc expert ? t'as juste fait un code qui supprime un message...
Rejoignez-nous