[ Index ] |
|
Code source de SPIP 1.9.2c |
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2007 * 7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * 8 * * 9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * 10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * 11 \***************************************************************************/ 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 14 15 include_spip('inc/minipres'); # charge lang et execute utiliser_lang 16 include_spip('inc/mail'); # pour envoyer_mail 17 include_spip('inc/acces'); # pour generer_htpass 18 include_spip('public/assembler'); # pour calculer la page 19 include_spip('inc/filtres'); # pour email_valide() 20 21 // Ce fichier est celui d'une balise dynamique qui s'ignore. 22 23 24 // fonction qu'on peut redefinir pour filtrer les adresses mail 25 26 // http://doc.spip.org/@test_oubli 27 function test_oubli($email) 28 { 29 if (!email_valide($email) ) 30 return _T('pass_erreur_non_valide', array('email_oubli' => htmlspecialchars($email))); 31 return array('mail' => $email); 32 } 33 34 // http://doc.spip.org/@message_oubli 35 function message_oubli($email, $param) 36 { 37 if (function_exists('test_oubli')) 38 $f = 'test_oubli'; 39 else 40 $f = 'test_oubli_dist'; 41 $declaration = $f($email); 42 43 if (!is_array($declaration)) 44 return $declaration; 45 46 $res = spip_query("SELECT id_auteur,statut,pass FROM spip_auteurs WHERE email =" . _q($declaration['mail'])); 47 48 if (!$row = spip_fetch_array($res)) 49 return _T('pass_erreur_non_enregistre', array('email_oubli' => htmlspecialchars($email))); 50 51 if ($row['statut'] == '5poubelle' OR $row['pass'] == '') 52 return _T('pass_erreur_acces_refuse'); 53 54 include_spip('inc/acces'); # pour creer_uniqid 55 $cookie = creer_uniqid(); 56 spip_query("UPDATE spip_auteurs SET cookie_oubli = '$cookie' WHERE id_auteur=" . $row['id_auteur']); 57 58 $nom = $GLOBALS['meta']["nom_site"]; 59 if ( envoyer_mail($email, 60 ("[$nom] " . _T('pass_oubli_mot')), 61 _T('pass_mail_passcookie', 62 array('nom_site_spip' => $nom, 63 'adresse_site' => url_de_base(), 64 'sendcookie' => generer_url_action('pass', "$param=$cookie", true)))) ) 65 return _T('pass_recevoir_mail'); 66 else 67 return _T('pass_erreur_probleme_technique'); 68 } 69 70 71 // http://doc.spip.org/@formulaire_oubli_dyn 72 function formulaire_oubli_dyn($p, $oubli) 73 { 74 75 $message = ''; 76 77 // au 3e appel la variable P est positionnee et oubli = mot passe. 78 // au 2e appel, P est vide et oubli vaut le mail a qui envoyer le cookie 79 // au 1er appel, P et oubli sont vides 80 81 if (!$p) { 82 if ($oubli) $message = message_oubli($oubli, 'p'); 83 } else { 84 $res = spip_query("SELECT login FROM spip_auteurs WHERE cookie_oubli=" . _q($p) . " AND statut<>'5poubelle' AND pass<>''"); 85 if (!$row = spip_fetch_array($res)) 86 $message = _T('pass_erreur_code_inconnu'); 87 else { 88 if ($oubli) { 89 $mdpass = md5($oubli); 90 $htpass = generer_htpass($oubli); 91 spip_query("UPDATE spip_auteurs SET htpass='$htpass', pass='$mdpass', alea_actuel='', cookie_oubli='' WHERE cookie_oubli=" . _q($p)); 92 93 $login = $row['login']; 94 $message = "<b>" . _T('pass_nouveau_enregistre') . "</b>". 95 "<p>" . _T('pass_rappel_login', array('login' => $login)); 96 } 97 } 98 } 99 return array('formulaires/oubli', 0, 100 array('p' => $p, 101 'message' => $message, 102 'action' => generer_url_action('pass'))); 103 } 104 105 // http://doc.spip.org/@action_pass_dist 106 function action_pass_dist() 107 { 108 utiliser_langue_visiteur(); 109 echo install_debut_html(_T('pass_mot_oublie')); 110 inclure_balise_dynamique(formulaire_oubli_dyn(_request('p'), _request('oubli'))); 111 echo install_fin_html(); 112 } 113 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 10:20:27 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |