[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/action/ -> pass.php (source)

   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  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics