[ Index ]
 

Code source de SPIP 1.8.3

Accédez au Source d'autres logiciels libres | Soutenez Angelica Josefina !

title

Body

[fermer]

/formulaires/ -> inc-login_public.php3 (source)

   1  <?php
   2  
   3  if (!defined("_ECRIRE_INC_VERSION")) return;    #securite
   4  
   5  include_local(_FILE_CONNECT);
   6  include_ecrire ("inc_meta.php3");
   7  include_ecrire ("inc_session.php3");
   8  include_ecrire ("inc_filtres.php3");
   9  
  10  global $balise_LOGIN_PUBLIC_collecte;
  11  $balise_LOGIN_PUBLIC_collecte = array('url');
  12  
  13  # retourner:
  14  # 1. l'url collectee ci-dessus (args0) ou donnee en filtre (filtre0)
  15  # 2. l'eventuel parametre de la balise (args1) fournie par
  16  #    calculer_balise_dynamique, en l'occurence le #LOGIN courant si l'on
  17  #    programme une <boucle(AUTEURS)>[(#LOGIN_PUBLIC{#LOGIN})]
  18  
  19  function balise_LOGIN_PUBLIC_stat ($args, $filtres) {
  20      return array($filtres[0] ? $filtres[0] : $args[0], $args[1], $args[2]);
  21  }
  22  
  23  function balise_LOGIN_PUBLIC_dyn($url, $login) {
  24  
  25      if (!$url        # pas d'url passee en filtr eou dans le contexte
  26      AND !$url = _request('url') # ni d'url passee par l'utilisateur
  27      ) {
  28          $link = new Link();
  29          $link->delVar('var_erreur');
  30          $link->delVar('var_login');
  31          $url = $link->getUrl();
  32      }
  33      return login_explicite($login, $url);
  34  }
  35  
  36  function login_explicite($login, $cible) {
  37      global $auteur_session;
  38  
  39      $link = new Link();
  40      $link->delVar('var_erreur');
  41      $link->delVar('var_login');
  42      $action = $link->getUrl();
  43  
  44      if ($cible) {
  45        $cible = ereg_replace("[?&]var_erreur=[^&]*", '', $cible);
  46        $cible = ereg_replace("[?&]var_login=[^&]*", '', $cible);
  47      } else {
  48        if (ereg("[?&]url=([^&]*)", $action, $m))
  49          $cible = urldecode($m[1]);
  50        else
  51          $cible = _DIR_RESTREINT ;
  52      }
  53            
  54      include_ecrire ("inc_session.php3");
  55      verifier_visiteur();
  56  
  57      if ($auteur_session AND 
  58      ($auteur_session['statut']=='0minirezo' OR $auteur_session['statut']=='1comite')) {
  59          if (($cible != $action) && !headers_sent()
  60          AND !$_GET['var_mode'])
  61              redirige_par_entete($cible);
  62          return http_href($cible, _T('login_par_ici'));
  63      }
  64      return login_pour_tous($login ? $login : _request('var_login'), $cible, $action);
  65  }
  66  
  67  function login_pour_tous($login, $cible, $action) {
  68      global $ignore_auth_http, $php_module, $_SERVER, $_COOKIE;
  69  
  70      // en cas d'echec de cookie, inc_auth a renvoye vers spip_cookie qui
  71      // a tente de poser un cookie ; s'il n'est pas la, c'est echec cookie
  72      // s'il est la, c'est probablement un bookmark sur bonjour=oui,
  73      // et pas un echec cookie.
  74      if (_request('var_echec_cookie'))
  75          $echec_cookie = ($_COOKIE['spip_session'] != 'test_echec_cookie');
  76      $auth_http = ($echec_cookie AND $php_module AND !$ignore_auth_http) ?
  77          'spip_cookie.php3' : '';
  78      // Attention dans le cas 'intranet' la proposition de se loger
  79      // par auth_http peut conduire a l'echec.
  80      if ($_SERVER['PHP_AUTH_USER'] AND $_SERVER['PHP_AUTH_PW'])
  81          $auth_http = '';
  82  
  83      // Le login est memorise dans le cookie d'admin eventuel
  84      if (!$login) {
  85          if (ereg("^@(.*)$", $_COOKIE['spip_admin'], $regs))
  86              $login = $regs[1];
  87      } else if ($login == '-1')
  88          $login = '';
  89  
  90      $erreur = '';
  91      if ($login) {
  92          $s = spip_query("SELECT * FROM spip_auteurs
  93              WHERE login='" .addslashes($login) ."'");
  94          $row =  spip_fetch_array($s);
  95  
  96          // Retrouver ceux qui signent de leur nom ou email
  97          if (!$row AND !$GLOBALS['ldap_present']) {
  98              if ($t = spip_fetch_array(
  99              spip_query(
 100                  "SELECT * FROM spip_auteurs
 101                  WHERE (nom LIKE '" .addslashes($login) ."'
 102                  OR email LIKE '" .addslashes($login) ."')
 103                  AND login<>'' AND statut<>'5poubelle'"
 104              ))) {
 105                  $row = $t;
 106                  $login_alt = $login; # afficher ce qu'on a tape
 107                  $login = $t['login'];
 108              }
 109          }
 110  
 111          if ((!$row AND !$GLOBALS['ldap_present']) OR
 112              ($row['statut'] == '5poubelle') OR 
 113              (($row['source'] == 'spip') AND $row['pass'] == '')) {
 114              $erreur =  _T('login_identifiant_inconnu',
 115                  array('login' => htmlspecialchars($login)));
 116              $row = array();
 117              $login = '';
 118              @spip_setcookie("spip_admin", "", time() - 3600);
 119          } else {
 120              // on laisse le menu decider de la langue
 121              unset($row['lang']);
 122          }
 123      }
 124      if (!$row)
 125          $row = array();
 126  
 127      // afficher "erreur de mot de passe" si &var_erreur=pass
 128      if (_request('var_erreur') == 'pass')
 129          $erreur = _T('login_erreur_pass');
 130  
 131      return array('formulaire_login', $GLOBALS['delais'],
 132          array_merge(
 133                  array_map('texte_script', $row),
 134                  array(
 135                      'action2' => ($login ? 'spip_cookie.php3' : $action),
 136                      'erreur' => $erreur,
 137                      'action' => $action,
 138                      'url' => $cible,
 139                      'auth_http' => $auth_http,
 140                      'echec_cookie' => ($echec_cookie ? ' ' : ''),
 141                      'login' => $login,
 142                      'login_alt' => ($login_alt ? $login_alt : $login),
 143                      'self' => $GLOBALS["clean_link"]->getUrl()
 144                      )
 145                  )
 146              );
 147  
 148  }
 149  
 150  // Bouton duree de connexion
 151  
 152  function filtre_rester_connecte($prefs) {
 153      $prefs = unserialize(stripslashes($prefs));
 154      return $prefs['cnx'] == 'perma' ? ' ' : '';
 155  }
 156  
 157  // made in cherche_image_nommee. A partager.
 158  
 159  function silogoauteur($id_auteur, $formats = array ('gif', 'jpg', 'png')) {
 160      reset($formats);
 161      while (list(, $format) = each($formats)) {
 162          $d = _DIR_IMG . "auton$id_auteur.$format";
 163          if (@file_exists($d)) return $d;
 164      }
 165      return  '';
 166  }
 167  
 168  ?>


Généré le : Thu Feb 22 22:27:47 2007 par Balluche grâce à PHPXref 0.7