[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/action/ -> cookie.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/actions');
  16  include_spip('inc/cookie');
  17  
  18  // http://doc.spip.org/@auth_http
  19  function auth_http($url) {
  20  
  21      if (verifier_php_auth())
  22          redirige_par_entete($url);
  23      else {
  24          ask_php_auth(_T('login_connexion_refusee'),
  25                   _T('login_login_pass_incorrect'),
  26                   _T('login_retour_site'),
  27                   "url=".rawurlencode($url),
  28                   _T('login_nouvelle_tentative'),
  29                   (ereg(_DIR_RESTREINT_ABS, $url)));
  30          exit;
  31      }
  32  }
  33  
  34  
  35  // http://doc.spip.org/@action_cookie_dist
  36  function action_cookie_dist()
  37  {
  38    global
  39      $auteur_session,
  40      $change_session,
  41      $cookie_admin,
  42      $cookie_session,
  43      $essai_auth_http,
  44      $essai_login,
  45      $ignore_auth_http,
  46      $retour,
  47      $session_login,
  48      $session_login_hidden,
  49      $session_password,
  50      $session_password_md5,
  51      $session_remember,
  52      $spip_admin,
  53      $test_echec_cookie,
  54      $url,
  55      $hash,
  56      $var_lang,
  57      $var_lang_ecrire;
  58  
  59  // rejoue le cookie pour renouveler spip_session
  60    if ($change_session == 'oui') {
  61      $session = charger_fonction('session', 'inc');
  62      $session(true);
  63      envoie_image_vide();
  64      return;
  65    }
  66  
  67  // tentative de connexion en auth_http
  68  if ($essai_auth_http AND !$ignore_auth_http) {
  69      auth_http(($url ? $url : _DIR_RESTREINT_ABS), $essai_auth_http);
  70      return;
  71  }
  72  
  73  // en cas de login sur bonjour=oui, on tente de poser un cookie
  74  // puis de passer au login qui diagnostiquera l'echec de cookie
  75  // le cas echeant.
  76  if ($test_echec_cookie == 'oui') {
  77      spip_setcookie('spip_session', 'test_echec_cookie');
  78      redirige_par_entete(generer_url_public('login',
  79                  "var_echec_cookie=oui&url="
  80                  . ($url ? rawurlencode($url) : _DIR_RESTREINT_ABS), true));
  81  }
  82  
  83  unset ($cookie_session);
  84  $redirect = ($url ? $url : _DIR_RESTREINT_ABS);
  85  if ($essai_login == "oui") {
  86      // Recuperer le login en champ hidden
  87      if ($session_login_hidden AND !$session_login)
  88          $session_login = $session_login_hidden;
  89  
  90      $row_auteur = array();
  91      spip_connect();
  92  
  93      // Essayer l'authentification par MySQL
  94      $auth_spip = charger_fonction('auth_spip', 'inc', true);
  95      if ($auth_spip) $row_auteur = $auth_spip($session_login, $session_password);        
  96  
  97      // Marche pas: essayer l'authentification par LDAP si present
  98      if (!$row_auteur AND $GLOBALS['ldap_present']) {
  99          $auth_ldap = charger_fonction('auth_ldap', 'inc', true);
 100          if ($auth_ldap) $row_auteur = $auth_ldap($session_login, $session_password);
 101      }
 102  
 103      // Marche pas, renvoyer le formulaire avec message d'erreur si 2e fois
 104      if (!$row_auteur) {
 105          if (ereg(_DIR_RESTREINT_ABS, $redirect))
 106              $redirect = generer_url_public('login',
 107                  "var_login=$session_login", true);
 108          if ($session_password || $session_password_md5)
 109              $redirect = parametre_url($redirect, 'var_erreur', 'pass', '&');
 110          $redirect .= '&url=' . rawurlencode($url);
 111          spip_log("echec login: $session_login");
 112      } else {
 113          spip_log("login de $session_login vers $redirect");
 114          // Si on se connecte dans l'espace prive, 
 115          // ajouter "bonjour" (repere a peu pres les cookies desactives)
 116          if (ereg(_DIR_RESTREINT_ABS, $redirect)) {
 117              $redirect .= ((false !== strpos($redirect, "?")) ? "&" : "?")
 118                  . 'bonjour=oui';
 119          }
 120          if ($row_auteur['statut'] == '0minirezo')
 121              $cookie_admin = "@".$session_login;
 122              
 123          $session = charger_fonction('session', 'inc');
 124          $cookie_session = $session($row_auteur);
 125  
 126          if ($session_remember == 'oui')
 127              spip_setcookie('spip_session', $cookie_session, time() + 3600 * 24 * 14);
 128          else
 129              spip_setcookie('spip_session', $cookie_session);
 130  
 131          $prefs = ($row_auteur['prefs']) ? unserialize($row_auteur['prefs']) : array();
 132          $prefs['cnx'] = ($session_remember == 'oui') ? 'perma' : '';
 133  
 134          spip_query("UPDATE spip_auteurs SET prefs = " . _q(serialize($prefs)) . " WHERE id_auteur = " . $row_auteur['id_auteur']);
 135      }
 136   }
 137  
 138  // cookie d'admin ?
 139  if ($cookie_admin == "non") {
 140      if (!$retour)
 141          $retour = generer_url_public('login',
 142              'url='.rawurlencode($url), true);
 143  
 144      spip_setcookie('spip_admin', $spip_admin, time() - 3600 * 24);
 145      $redirect = parametre_url($retour,'var_login','','&');
 146      $redirect = parametre_url($redirect,'var_erreur','','&');
 147      $redirect .= ((false !== strpos($redirect, "?")) ? "&" : "?")
 148          . "var_login=-1";
 149  }
 150  else if ($cookie_admin AND $spip_admin != $cookie_admin) {
 151      spip_setcookie('spip_admin', $cookie_admin, time() + 3600 * 24 * 14);
 152   }
 153  
 154  // changement de langue espace public
 155  if ($var_lang) {
 156      include_spip('inc/lang');
 157  
 158      if (changer_langue($var_lang)) {
 159          spip_setcookie('spip_lang', $var_lang, time() + 365 * 24 * 3600);
 160          $redirect = parametre_url($redirect,'lang',$var_lang,'&');
 161      }
 162   }
 163  
 164  // changer de langue espace prive avant le login (i.e. pas authentfie)
 165  elseif ($var_lang_ecrire) {
 166      include_spip('action/converser');
 167      action_converser_post();
 168   }
 169    redirige_par_entete($redirect, true);
 170  }
 171  ?>


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