[ Index ] |
|
Code source de SPIP 1.8.3 |
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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Thu Feb 22 22:27:47 2007 | par Balluche grâce à PHPXref 0.7 |