[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / couteau_suisse / couteau_suisse / outils / spam_options.php
diff --git a/www/plugins/auto/couteau_suisse/couteau_suisse/outils/spam_options.php b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/spam_options.php
new file mode 100644 (file)
index 0000000..fed4112
--- /dev/null
@@ -0,0 +1,54 @@
+<?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