init()) { // Essayer les mots de passe md5 $ok = $auth->verifier_challenge_md5($login, $session_password_md5, $next_session_password_md5); // Sinon essayer avec le mot de passe en clair if (!$ok && $session_password) $ok = $auth->verifier($login, $session_password); if ($ok) { $auth->lire(); break; } } } // Si la connexion a reussi if ($ok) { // Nouveau redacteur ou visiteur inscrit par mail : // 'nouveau' -> '1comite' ou '6forum' // Si LDAP : importer l'utilisateur vers la base SPIP $auth->activer(); if ($auth->login AND $auth->statut == '0minirezo') // force le cookie pour les admins $cookie_admin = "@".$auth->login; // On est connecte : recuperer les donnees auteurs // poser le cookie session, puis le cas echeant // verifier que le statut correspond au minimum requis, $query = "SELECT * FROM spip_auteurs WHERE login='".addslashes($auth->login)."'"; $result = spip_query($query); if ($row_auteur = spip_fetch_array($result)) { $cookie_session = creer_cookie_session($row_auteur); } else $ok = false; // Si on se connecte dans l'espace prive, ajouter "bonjour" (inutilise) if ($ok AND ereg(_DIR_RESTREINT_ABS, $redirect)) { $redirect .= (strpos($redirect, "?") ? "&" : "?") . 'bonjour=oui'; } } if (!$ok) { if (ereg(_DIR_RESTREINT_ABS, $redirect)) $redirect = "spip_login.php3"; $redirect .= (strpos($redirect, "?") ? "&" : "?") . "var_login=$login"; if ($session_password || $session_password_md5) $redirect .= '&var_erreur=pass'; $redirect .= '&url=' . urlencode($url); } } // cookie d'admin ? if ($cookie_admin == "non") { if (!$retour) $retour = 'spip_login.php3?var_url='.urlencode($url); spip_setcookie('spip_admin', $spip_admin, time() - 3600 * 24); $redirect = ereg_replace("([?&])var_login=[^&]*", '\1', urldecode($retour)); $redirect .= (strpos($redirect, "?") ? "&" : "?") . "var_login=-1"; } else if ($cookie_admin AND $spip_admin != $cookie_admin) { spip_setcookie('spip_admin', $cookie_admin, time() + 3600 * 24 * 14); } // cookie de session ? if ($cookie_session) { if ($session_remember == 'oui') spip_setcookie('spip_session', $cookie_session, time() + 3600 * 24 * 14); else spip_setcookie('spip_session', $cookie_session); $prefs = ($row_auteur['prefs']) ? unserialize($row_auteur['prefs']) : array(); $prefs['cnx'] = ($session_remember == 'oui') ? 'perma' : ''; spip_query ("UPDATE spip_auteurs SET prefs = '".addslashes(serialize($prefs))."' WHERE id_auteur = ".$row_auteur['id_auteur']); } // changement de langue espace public if ($var_lang) { include_ecrire('inc_lang.php3'); if (changer_langue($var_lang)) { spip_setcookie('spip_lang', $var_lang, time() + 365 * 24 * 3600); $redirect = ereg_replace("[?&]lang=[^&]*", '', $redirect); $redirect .= (strpos($redirect, "?") ? "&" : "?") . "lang=$var_lang"; } } // changer de langue espace prive (ou login) if ($var_lang_ecrire) { include_ecrire('inc_lang.php3'); verifier_visiteur(); if (changer_langue($var_lang_ecrire)) { spip_setcookie('spip_lang_ecrire', $var_lang_ecrire, time() + 365 * 24 * 3600); spip_setcookie('spip_lang', $var_lang_ecrire, time() + 365 * 24 * 3600); if (_FILE_CONNECT) { include_ecrire('inc_admin.php3'); if (verifier_action_auteur('var_lang_ecrire', $valeur, $id_auteur)) { spip_query ("UPDATE spip_auteurs SET lang = '".addslashes($var_lang_ecrire)."' WHERE id_auteur = ".$id_auteur); $auteur_session['lang'] = $var_lang_ecrire; ajouter_session($auteur_session, $spip_session); // enregistrer dans le fichier de session } } $redirect = ereg_replace("[?&]lang=[^&]*", '', $redirect); $redirect .= (strpos($redirect, "?") ? "&" : "?") . "lang=$var_lang_ecrire"; } } // Redirection // Sous Apache, les cookies avec une redirection fonctionnent // Sinon, on fait un refresh HTTP if (ereg("^Apache", $SERVER_SOFTWARE)) { redirige_par_entete($redirect); } else { @header("Refresh: 0; url=" . $redirect); echo ""; echo ""; echo "\n"; echo ""._T('navigateur_pas_redirige').""; } ?>