Changeset 94562 in spip-zone


Ignore:
Timestamp:
Jan 12, 2016, 10:41:50 AM (4 years ago)
Author:
fabio.bertagnin@…
Message:

Ajout d'un panneau de configuration pour choisir le type de captcha : copie de 4 caractères, addition de deux valeurs ou multiplication de deux valeurs

Location:
_plugins_/fbantispam
Files:
3 edited
2 copied

Legend:

Unmodified
Added
Removed
  • _plugins_/fbantispam/fbantispam_pipelines.php

    r81051 r94562  
    11<?php
     2
    23/**
    34 * Plugin FB Antispam
     
    78 *
    89 */
    9 
    10 if (!defined("_ECRIRE_INC_VERSION")) return;
    11 
     10if (!defined("_ECRIRE_INC_VERSION"))
     11    return;
    1212
    1313/**
     
    1818 */
    1919function fbantispam_recuperer_fond($flux) {
    20         $fond = strval($flux['args']['fond']);
    21         if (false !== $pos = strpos($fond, 'formulaires/forum'))
    22         {
    23                 // on ajoute le champ 'nobot' si pas present dans le formulaire
    24                 $texte = &$flux['data']['texte'];
    25                 $pos = strpos($texte, '</form>');
    26                 $nobot = recuperer_fond("inclure/nobot", array('nobot' => ''));
    27                 $texte = substr_replace($texte, $nobot, $pos, 0);
     20    $fond = strval($flux['args']['fond']);
     21    if (false !== $pos = strpos($fond, 'formulaires/forum')) {
     22        // on ajoute le champ 'nobot' si pas present dans le formulaire
     23        $texte = &$flux['data']['texte'];
     24        $pos = strpos($texte, '</form>');
     25        $nobot = recuperer_fond("inclure/nobot", array('nobot' => ''));
     26        $texte = substr_replace($texte, $nobot, $pos, 0);
    2827
    29                 // On ajoute le champ 'captcha' avant le bouton de submit
    30                 // On commence de la fin, pour se positionner dans le formulaire de saisie et non dans
    31                 // celui de prévisualisation
    32                 $pos = strrpos($texte, '<p class="boutons">', 0);
    33                 // S'il n'a pas trouvé le bouton, on se positionne à la fin du formulaire (moins joli !)
    34                 if (!$pos) $pos = strrpos($texte, '</form', 0);
    35                 if ($pos)
    36                 {
    37                         $cp = fbantispam_get_captcha();
    38                         $cps = "$cp[0]$cp[1]$cp[2]$cp[3]";
    39                         $captcha = recuperer_fond("inclure/captcha", array('captcha' => $cps, 'c1' => $cp[0]*2, 'c0' => $cp[1]*2, 'c2' => $cp[2]*2, 'c3' => $cp[3]*2));
    40                         $texte = substr_replace($texte, $captcha, $pos, 0);
    41                 }
    42         }
    43         return $flux;
     28        // On ajoute le champ 'captcha' avant le bouton de submit
     29        // On commence de la fin, pour se positionner dans le formulaire de saisie et non dans
     30        // celui de prévisualisation
     31        $pos = strrpos($texte, '<p class="boutons">', 0);
     32        // S'il n'a pas trouvé le bouton, on se positionne à la fin du formulaire (moins joli !)
     33        if (!$pos)
     34            $pos = strrpos($texte, '</form', 0);
     35        if ($pos) {
     36            $type_captcha = lire_config('fbantispam/type_captcha', 'copie');
     37            if ($type_captcha == 'copie')
     38            {
     39                $cp = fbantispam_get_captcha();
     40                $cps = "$cp[0]$cp[1]$cp[2]$cp[3]";
     41                $captcha = recuperer_fond("inclure/captcha", array('captcha' => $cps, 'c1' => $cp[0] * 2, 'c0' => $cp[1] * 2, 'c2' => $cp[2] * 2, 'c3' => $cp[3] * 2));
     42                $texte = substr_replace($texte, $captcha, $pos, 0);
     43            }
     44            if ($type_captcha == 'addition')
     45            {
     46                $cp = fbantispam_get_captcha();
     47                $cps = "$cp[1]+$cp[3]";
     48                $captcha = recuperer_fond("inclure/captcha-addition", array('captcha' => $cps, 'c1' => $cp[0] * 2, 'c0' => $cp[1] * 2, 'c2' => $cp[2] * 2, 'c3' => $cp[3] * 2));
     49                $texte = substr_replace($texte, $captcha, $pos, 0);
     50            }
     51            if ($type_captcha == 'multiplication')
     52            {
     53                $cp = fbantispam_get_captcha();
     54                $cps = "$cp[1]x$cp[3]";
     55                $captcha = recuperer_fond("inclure/captcha-multiplication", array('captcha' => $cps, 'c1' => $cp[0] * 2, 'c0' => $cp[1] * 2, 'c2' => $cp[2] * 2, 'c3' => $cp[3] * 2));
     56                $texte = substr_replace($texte, $captcha, $pos, 0);
     57            }
     58        }
     59    }
     60    return $flux;
    4461}
    4562
     
    4764 */
    4865function fbantispam_formulaire_charger($flux) {
    49         $form = $flux['args']['form'];
    50         $je_suis_poste = false;
    51         if (isset($flux['args']['je_suis_poste']) && $flux['args']['je_suis_poste'] == 1) $je_suis_poste = true;
    52         if ($form == "forum" && !$je_suis_poste)
    53         {
    54                 include_spip("inc/fbantispam");
    55                 if ($charger_formulaire = charger_fonction("charger_formulaire_forum", "fbantispam", true))
    56                 {
    57                         $flux = $charger_formulaire($flux);
    58                 }
    59         }
    60         return $flux;
     66    $form = $flux['args']['form'];
     67    $je_suis_poste = false;
     68    if (isset($flux['args']['je_suis_poste']) && $flux['args']['je_suis_poste'] == 1)
     69        $je_suis_poste = true;
     70    if ($form == "forum" && !$je_suis_poste) {
     71        include_spip("inc/fbantispam");
     72        if ($charger_formulaire = charger_fonction("charger_formulaire_forum", "fbantispam", true)) {
     73            $flux = $charger_formulaire($flux);
     74        }
     75    }
     76    return $flux;
    6177}
    6278
     
    6480 */
    6581function fbantispam_formulaire_verifier($flux) {
    66         $form = $flux['args']['form'];
    67         $previsu = false;
    68         if (isset($flux['data']['previsu']) && $flux['data']['previsu'] != '') $previsu = true;
     82    $form = $flux['args']['form'];
     83    $previsu = false;
     84    if (isset($flux['data']['previsu']) && $flux['data']['previsu'] != '')
     85        $previsu = true;
    6986
    70         $res = array();
     87    $res = array();
    7188
    72         if ($form == "forum" && $previsu)
    73         {
    74                
    75                 $captcha = _request('captcha');
    76                 $cp0 = _request('c1')/2;
    77                 $cp1 = _request('c0')/2;
    78                 $cp2 = _request('c2')/2;
    79                 $cp3 = _request('c3')/2;
    80                 $cps = "$cp0"."$cp1"."$cp2"."$cp3";
    81                 if ($captcha == '')
    82                 {
    83                         $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'a pas été saisi</p>';
    84                         return $res;
    85                 }
    86                 if ($captcha != $cps)
    87                 {
    88                         $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
    89                         return $res;
    90                        
    91                 }
    92                 $cmod = _request('cmod');
    93                 if ($cmod != 'fbantispam')
    94                 {
    95                         $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : message non accepté (identifié à un SPAM)</p>';
    96                         return $res;
    97                        
    98                 }
    99         }
    100         return $flux;
     89    if ($form == "forum" && $previsu) {
     90
     91        $captcha = _request('captcha');
     92        $cp0 = _request('c1') / 2;
     93        $cp1 = _request('c0') / 2;
     94        $cp2 = _request('c2') / 2;
     95        $cp3 = _request('c3') / 2;
     96        $cmod = _request('cmod');
     97        if ($cmod != 'fbantispam') {
     98            $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : message non accepté (identifié à un SPAM)</p>';
     99            return $res;
     100        }
     101        if ($captcha == '') {
     102            $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'a pas été saisi</p>';
     103            return $res;
     104        }
     105        $type_captcha = lire_config('fbantispam/type_captcha');
     106        if ($type_captcha == 'copie')
     107        {
     108            $cps = "$cp0" . "$cp1" . "$cp2" . "$cp3";
     109            if ($captcha != $cps) {
     110                $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     111                return $res;
     112            }
     113        }
     114        elseif ($type_captcha == 'addition')
     115        {
     116            $cps = $cp1 + $cp3;
     117            if ($captcha != $cps) {
     118                $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     119                return $res;
     120            }
     121        }
     122        elseif ($type_captcha == 'multiplication')
     123        {
     124            $cps = $cp1 * $cp3;
     125            if ($captcha != $cps) {
     126                $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     127                return $res;
     128            }
     129        }
     130        else
     131        {
     132            $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : pas de captcha connu</p>';
     133            return $res;
     134        }
     135       
     136    }
     137    return $flux;
    101138}
    102139
     
    104141 */
    105142function fbantispam_formulaire_traiter($flux) {
    106         return $flux;
     143    return $flux;
    107144}
    108145
     
    110147 */
    111148function fbantispam_pre_edition($flux) {
    112         return $flux;
     149    return $flux;
    113150}
    114151
    115152/**
    116153 */
    117 function fbantispam_get_captcha()
    118 {
    119         $ret = array();
    120         for($i=0; $i<4; $i++)
    121         {
    122                 $ret[$i] = rand(0,9);
    123         }
    124         return $ret;
     154function fbantispam_get_captcha() {
     155    $ret = array();
     156    for ($i = 0; $i < 4; $i++) {
     157        $ret[$i] = rand(0, 9);
     158    }
     159    return $ret;
    125160}
    126161
  • _plugins_/fbantispam/inclure/captcha-addition.html

    r81051 r94562  
    88<input type="hidden" name="cmod" id="cmod" value="fbantispam" />
    99<p style="background:#ffffaa;padding:4px;text-align:center">
    10     <label for="captcha">Controle anti-spam : saisissez les caractères suivants<br />
     10    <label for="captcha">Controle anti-spam : saisissez le résultat de l'addition suivante<br />
    1111    <strong>
    1212        [(#ENV{captcha}|image_typo{police=dustismo_bold.ttf,taille=36,align=center,padding_5}
  • _plugins_/fbantispam/inclure/captcha-multiplication.html

    r81051 r94562  
    88<input type="hidden" name="cmod" id="cmod" value="fbantispam" />
    99<p style="background:#ffffaa;padding:4px;text-align:center">
    10     <label for="captcha">Controle anti-spam : saisissez les caractères suivants<br />
     10    <label for="captcha">Controle anti-spam : saisissez le résultat de la multiplication suivante<br />
    1111    <strong>
    1212        [(#ENV{captcha}|image_typo{police=dustismo_bold.ttf,taille=36,align=center,padding_5}
  • _plugins_/fbantispam/paquet.xml

    r81299 r94562  
    22        prefix="fbantispam"
    33        categorie="performance"
    4         version="1.1.1"
     4        version="1.2.0"
    55        etat="test"
    66        compatibilite="[2.0.0;3.0.*]"
     
    1414        <auteur lien="www.fbservices.fr">Fabio Bertagnin FBServices</auteur>
    1515
    16         <copyright>2013-2014</copyright>
     16        <copyright>2013-2016</copyright>
    1717
    1818        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
  • _plugins_/fbantispam/plugin.xml

    r81299 r94562  
    66        <auteur>Fabio Bertagnin - FBServices www.fbservices.fr</auteur>
    77        <icon>images/beos-stop-icone-8929-32.png</icon>
    8         <licence>(c) 2013-2014 GPL</licence>
    9         <version>1.1.1</version>
     8        <licence>(c) 2013-2016 GPL</licence>
     9        <version>1.2.0</version>
    1010        <etat>test</etat>
    1111        <description>
Note: See TracChangeset for help on using the changeset viewer.