--- /dev/null
+<?php\r
+\r
+// traitement anti-spam uniquement si $_POST est rempli et si l'espace n'est pas prive\r
+if ( count($_POST) \r
+ // espace prive en clair dans l'url\r
+ && (strpos($_SERVER['PHP_SELF'],'/ecrire') === false) \r
+ // cas des actions\r
+ && !isset($_POST['action'])\r
+ ) {\r
+\r
+ // champs du formulaire a visiter\r
+ // un message en forum : texte, titre, auteur\r
+ // un message a un auteur : texte_message_auteur_XX, sujet_message_auteur_XX, email_message_auteur_XX\r
+ // inscription : nom_inscription, mail_inscription\r
+ // login : session_*\r
+ $spam_POST_reg = ',^(?:texte|titre|sujet|auteur|nom|e?mail|session),i';\r
+ // on compile $spam_POST en fonction des variables $_POST trouvees\r
+ $spam_POST_compile = array();\r
+ foreach (array_keys($_POST) as $key)\r
+ if (preg_match($spam_POST_reg, $key) && strpos($key, 'password')===false)\r
+ $spam_POST_compile[] = $key;\r
+\r
+ include_spip('cout_lancement');\r
+ $spam_mots = cs_lire_data_outil('spam');\r
+ // test IP compatible avec l'outil 'no_IP'\r
+ $test = $spam_mots[3]?preg_match($spam_mots[3], $ip_):false;\r
+ foreach ($spam_POST_compile as $var) if(!$test)\r
+ if(cs_test_spam($spam_mots, $_POST[$var], $test)) $_GET['var'] = $var;\r
+ if($test) $_GET['action'] = "cs_spam";\r
+ // nettoyage\r
+ unset($test, $spam_mots, $spam_POST_reg, $spam_POST_compile);\r
+\r
+ function action_cs_spam(){\r
+ include_spip('inc/minipres');\r
+ echo minipres(\r
+ _T('couteau:lutte_spam'),\r
+ '<pre>'.$_POST[$_GET['var']].'</pre><div>'._T('couteau:explique_spam').'</div>'\r
+ );\r
+ exit;\r
+ }\r
+}\r
+unset($ip_);\r
+\r
+function cs_test_spam(&$spam, &$texte, &$test) {\r
+ foreach($spam[0] as $m) $test |= strpos($texte, $m)!==false;\r
+ if(!$test && $spam[1]) $test = preg_match($spam[1], $texte);\r
+ if(!$test && $spam[2]) {\r
+ include_spip('inc/charsets');\r
+ $test = preg_match($spam[2], charset2unicode($texte));\r
+ }\r
+ return $test;\r
+}\r
+\r
+?>
\ No newline at end of file