Changeset 63442 in spip-zone


Ignore:
Timestamp:
Jul 13, 2012, 3:35:12 PM (7 years ago)
Author:
cedric@…
Message:

Utiliser echappe_html pour echapper code, cadre,etc... (plutot que regexp manuelle)
PHPDoc
Extensibilite : on peut ajouter des fonctions de verification antispam par formulaire qui seront appelées depuis verifier() de nospam
il faut que la fonctio nospam_formulaire_xxx[_dist] existe et que xxx soit dans la liste des formulaires à protéger.

Location:
_plugins_/nospam
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/nospam/inc/nospam.php

    r57774 r63442  
    2424 * Calcule une cle de jeton pour un formulaire
    2525 *
    26  * @param string $form nom du formulaire
    27  * @return string cle calculee
     26 * @param string $form
     27 *   nom du formulaire
     28 * @param string $qui
     29 *   identifiant du visiteur a qui est attribue le jeton
     30 * @return string
     31 *   cle calculee
    2832 */
    2933function creer_jeton($form, $qui=NULL) {
     
    118122       
    119123        // on ne tient pas compte des blocs <code> et <cadre> ni de leurs contenus
    120         $texte_humain = preg_replace(',<(code|cadre)\s*[^>]*>.*</\1>,UimsS', ' ', $texte);
     124        include_spip("inc/texte_mini");
     125        if (!function_exists('echappe_html')) // SPIP 2.x
     126                include_spip("inc/texte");
     127        $texte_humain = echappe_html($texte);
    121128        // on repère dans ce qui reste la présence de style= ou class= qui peuvent
    122129        // servir à masquer du contenu
  • _plugins_/nospam/nospam_pipelines.php

    r62193 r63442  
    8383                                unset($flux['data']['previsu']);
    8484                }
    85         }
    86         // pas la peine de filtrer les contenus postés par un admin
    87         if ($GLOBALS['visiteur_session']['statut'] != '0minirezo'){
    88                 if ($form=='forum'){
    89                         if (!isset($flux['data']['texte'])
    90                                 AND $GLOBALS['meta']['forums_texte'] == 'oui'){
    91                                 include_spip("inc/nospam");
    92                                 // regarder si il y a du contenu en dehors des liens !
    93                                 $caracteres = compter_caracteres_utiles(_request('texte'));
    94                                 if ($caracteres < 10){
    95                                         $flux['data']['texte'] = _T('forum_attention_dix_caracteres');
    96                                         unset($flux['data']['previsu']);
    97                                 }
    98                         }
    99                 }
    100                 if ($form=='ecrire_auteur'){
    101                         if (!isset($flux['data']['texte_message_auteur'])){
    102                                 include_spip("inc/nospam");
    103                                 include_spip("inc/texte");
    104                                 // regarder si il y a du contenu en dehors des liens !
    105                                 $texte_message_auteur = _request('texte_message_auteur');
    106                                 $caracteres = compter_caracteres_utiles($texte_message_auteur);
    107                                 if ($caracteres < 10){
    108                                         $flux['data']['texte_message_auteur'] = _T('forum_attention_dix_caracteres');
    109                                         unset($flux['data']['previsu']);
    110                                 }
    111                                 // on analyse le sujet
    112                                 $infos_sujet = analyser_spams(_request('sujet_message_auteur'));
    113                                 // si un lien dans le sujet = spam !
    114                                 if ($infos_sujet['nombre_liens'] > 0){
    115                                         $flux['data']['sujet_message_auteur'] = _T('nospam:erreur_spam');
    116                                         unset($flux['data']['previsu']);
    117                                 }
    11885
    119                                 // on analyse le texte
    120                                 $infos_texte = analyser_spams($texte_message_auteur);
    121                                 if ($infos_texte['nombre_liens'] > 0) {
    122                                         // si un lien a un titre de moins de 3 caracteres = spam !
    123                                         if ($infos_texte['caracteres_texte_lien_min'] < 3) {
    124                                                 $flux['data']['texte_message_auteur'] = _T('nospam:erreur_spam');
    125                                         }
    126                                         // si le texte contient plus de trois liens = spam !
    127                                         if ($infos_texte['nombre_liens'] >= 3)
    128                                                 $flux['data']['texte_message_auteur'] = _T('nospam:erreur_spam');
    129                                 }
    130                         }
    131                 }
    132                 if ($form=='signature'){
    133                         $id_article = $flux['args']['args'][0];
    134                         $row = sql_fetsel('*', 'spip_petitions', "id_article=".intval($id_article));
    135                         if ((!isset($flux['data']['message'])) && ($row['message']  == "oui")){
    136                                 include_spip("inc/nospam");
    137                                 include_spip("inc/texte");
    138                                 // regarder si il y a du contenu en dehors des liens !
    139                                 $message = _request('message');
    140                                 // on analyse le texte
    141                                 $infos_texte = analyser_spams($message);
    142                                 if ($infos_texte['nombre_liens'] > 0) {
    143                                         // si un lien a un titre de moins de 3 caracteres = spam !
    144                                         if ($infos_texte['caracteres_texte_lien_min'] < 3) {
    145                                                 $flux['data']['message_erreur'] = _T('nospam:erreur_spam');
    146                                         }
    147                                         // si le texte contient plus de trois liens = spam !
    148                                         if ($infos_texte['nombre_liens'] >= 2)
    149                                                 $flux['data']['message_erreur'] = _T('nospam:erreur_spam');
    150                                 }
    151                         }
    152                         // S'il y a un lien dans le champ session_nom => spam
    153                         if (!isset($flux['data']['session_nom'])){
    154                                 include_spip("inc/nospam");
    155                                 $infos_texte = analyser_spams(_request('session_nom'));
    156                                 if ($infos_texte['nombre_liens'] > 0) {
    157                                         $flux['data']['message_erreur'] = _T('nospam:erreur_spam');
    158                                         spip_log("Lien dans le champ session_nom ".$flux['data']['message_erreur'],'nospam');
    159                                 }
     86                // pas la peine de filtrer les contenus postés par un admin
     87                if ($GLOBALS['visiteur_session']['statut'] != '0minirezo'){
     88                        if ($verifier_form = charger_fonction("verifier_form_$form","nospam",true)){
     89                                $flux = $verifier_form($flux);
    16090                        }
    16191                }
  • _plugins_/nospam/plugin.xml

    r62193 r63442  
    1010        <icon>images/nospam-32.png</icon>
    1111        <licence>(c) 2008 GPL</licence>
    12         <version>0.8.12</version>
     12        <version>0.9.0</version>
    1313        <etat>stable</etat>
    1414        <description><multi>
Note: See TracChangeset for help on using the changeset viewer.