[ 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/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 ?>
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 |
![]() |