function nospam_lister_formulaires() {
if (!isset($GLOBALS['formulaires_no_spam']))
$GLOBALS['formulaires_no_spam'] = array();
- $formulaires = array_merge($GLOBALS['formulaires_no_spam'], array('forum', 'ecrire_auteur', 'signature'));
+ $formulaires = array_merge($GLOBALS['formulaires_no_spam'], array('inscription','forum', 'ecrire_auteur', 'signature', 'recommander','newsletter_subscribe','newsletter_unsubscribe'));
return pipeline('nospam_lister_formulaires', $formulaires);
}
if ((false === strpos($texte, 'name="email_nobot"'))
AND (false !== $pos = strpos($texte, '</form>'))
) {
- // essayer de s'inserer au hasard entre 2 li du form
- if (preg_match_all(",<li\b[^>]*class=['\"]editer[^>]*,ims",$texte,$m)
- AND $p = strpos($texte,$m[0][rand(0,count($m[0])-1)])){
- $nobot = recuperer_fond("inclure/nobot", array('email_nobot' => '','div'=>'li'));
+ // essayer de s'inserer au hasard entre 2 div/li du form
+ if (preg_match_all(",<(div|li)\b[^>]*class=['\"]editer[^>]*,ims",$texte,$m)
+ AND $i = rand(0,count($m[0])-1)
+ AND $p = strpos($texte,$m[0][$i])){
+ $nobot = recuperer_fond("inclure/nobot", array('email_nobot' => '','div'=>$m[1][$i]));
$texte = substr_replace($texte, $nobot, $p, 0);
}
- // et sinon a la fin
+ // et sinon a la fin juste avant la(les) balise(s) </form>
else {
$nobot = recuperer_fond("inclure/nobot", array('email_nobot' => ''));
- $texte = substr_replace($texte, $nobot, $pos, 0);
+ $texte = str_replace('</form>', $nobot . '</form>', $texte);
}
}
if (_SPAM_ENCRYPT_NAME){
) {
include_spip("inc/nospam");
$jeton = creer_jeton($form);
+ if (!isset($flux['data']['_hidden'])) {
+ $flux['data']['_hidden'] = "";
+ }
$flux['data']['_hidden'] .= "<input type='hidden' name='_jeton' value='$jeton' />";
if (_SPAM_ENCRYPT_NAME){
+ $flux['data']['_hidden'] .= "<input type='hidden' name='_encrypt' value='1' />";
// recuperer les autosave encryptes si possible
if (is_array($flux['data'])
AND isset($flux['data']['_autosave_id'])
// si oui on les decrypte puis on relance la verif complete
// attention, du coup verifier() est appele 2 fois dans ce cas (peut poser probleme ?)
// donc on repasse ici une deuxieme fois, et il ne faut pas relancer le decryptage
- if (_SPAM_ENCRYPT_NAME AND !$deja){
+ if (_request('_encrypt') AND !$deja){
$deja = true;
$re_verifier = false;
foreach($_POST as $k=>$v){
return $flux;
}
}
+ // si l'encrypt a ete active depuis l'affichage initial de ce form, on rebalance l'erreur technique
+ // pour reforcer un POST
+ if (_SPAM_ENCRYPT_NAME AND !_request('_encrypt')){
+ spip_log('SPAM_ENCRYPT_NAME active mais _encrypt manquant','nospam');
+ $flux['data']['message_erreur'] = _T('nospam:erreur_jeton');
+ }
// le jeton prend en compte l'heure et l'ip de l'internaute
- if (_request('nobot') // trop facile !
+ elseif (_request('nobot') // trop facile !
OR _request('email_nobot')
OR (!verifier_jeton($jeton, $form))
) {
}
return "ok";
}
-?>
\ No newline at end of file
+?>