source: spip-zone/_plugins_/antispam-recaptcha/fonctions_recaptcha.php @ 115728

Last change on this file since 115728 was 60431, checked in by gilles.vincent@…, 8 years ago

Mise a jour de l'antispam base sur reCaptcha

File size: 1.7 KB
Line 
1<?php
2
3/*
4 * Filtre recaptcha pour proteger les emails
5 * Auteur: (c) fil@rezo.net 2007
6 * Licence GNU/GPL
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11// http://recaptcha.googlecode.com/files/recaptcha-php-1.11.zip
12function get_recaptcha_keys($force = false) {
13        if ($force
14        OR !isset($GLOBALS['meta']['recaptcha_keys'])
15        OR !is_array($keys = @unserialize($GLOBALS['meta']['recaptcha_keys']))) {
16
17                spip_log('chargement d\'une cle API recaptcha');
18                include_spip('inc/distant');
19                include_spip('inc/texte');
20                include_spip('inc/filtres');
21                $u = translitteration(textebrut(recuperer_page('http://www.google.com/recaptcha/mailhide/apikey')));
22                if(!preg_match(',Cl([^p]+)publique:(.*),i', $u, $r1) // La page retourne des accents qui (pour l'instant) sont errones, donc ne passent pas la translitteration
23                OR !preg_match(',Cl([^p]+)prive:(.*),i', $u, $r2)) {
24                        spip_log('erreur recaptcha n\'a pas donne de cle : '.$u);
25                        return false;
26                }
27
28                $keys = array(
29                        'public' => trim($r1[2]),
30                        'private' => trim($r2[2])
31                );
32               
33                ecrire_meta('recaptcha_keys', serialize($keys));
34                ecrire_metas();
35        } 
36       
37        return $keys;
38}
39
40function filtre_antispamrecaptcha($email) {
41        if (strpos($email, '@') === false)
42                return;
43
44        if (!$keys = get_recaptcha_keys())
45                return $email;
46
47        require_once _DIR_PLUGIN_RECAPTCHA.'recaptchalib.php';
48        return recaptcha_mailhide_html ($keys['public'], $keys['private'], $email);
49#       return recaptcha_mailhide_url ($keys['public'], $keys['private'], $email);
50}
51
52// Si la fonction antispam existe deja, on ne fournit que antispam_recaptcha
53if (!function_exists('filtre_antispam')) {
54        function filtre_antispam($email) {
55                return filtre_antispamrecaptcha($email);
56        }
57} else spip_log('filtre_antispam deja definie');
58
59?>
Note: See TracBrowser for help on using the repository browser.