foreach ($DB_TAB as $DB_ROW) { $options .= '<option value="' . $DB_ROW['user_id'] . '">' . html($DB_ROW['user_nom'] . ' ' . $DB_ROW['user_prenom'] . ' (' . $DB_ROW['user_profil_nom_court_singulier'] . ')') . '</option>'; } } exit_json(TRUE, $options); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Deuxième soumission : récupérer les informations sur l'utilisateur et envoyer le courriel // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($user_id) { // En cas de multi-structures, il faut charger les paramètres de connexion à la base concernée if (HEBERGEUR_INSTALLATION == 'multi-structures') { charger_parametres_mysql_supplementaires($BASE); } // On récupère les données de l'utilisateur $DB_ROW = DB_STRUCTURE_PUBLIC::DB_recuperer_user_for_new_mdp('user_id', $user_id); if (empty($DB_ROW)) { $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++; $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME']; exit_json(FALSE, 'Utilisateur inconnu ! Nouvelle tentative autorisée dans ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's.'); } // On vérifie que l'adresse mail concorde if ($DB_ROW['user_email'] != $courriel) { $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++; $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME']; exit_json(FALSE, 'Adresse mail non concordante ! Nouvelle tentative autorisée dans ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's.'); } // On enregistre un ticket pour cette demande $user_pass_key = crypter_mdp($DB_ROW['user_id'] . $DB_ROW['user_email'] . $DB_ROW['user_password'] . $DB_ROW['user_connexion_date']); $code_mdp = $BASE ? $user_pass_key . 'g' . $BASE : $user_pass_key; DB_STRUCTURE_PUBLIC::DB_modifier_user_password_or_key($DB_ROW['user_id'], '', $user_pass_key);
// Vérification de la structure du code list($user_pass_key, $BASE) = explode('g', $code_mdp) + array_fill(0, 2, NULL); // Evite des NOTICE en initialisant les valeurs manquantes $BASE = (int) $BASE; if (!$user_pass_key || $BASE == 0 && HEBERGEUR_INSTALLATION == 'multi-structures') { exit_error($TITRE, 'Le code transmis est incohérent (format inattendu).'); } // En cas de multi-structures, il faut charger les paramètres de connexion à la base concernée if (HEBERGEUR_INSTALLATION == 'multi-structures') { $result = charger_parametres_mysql_supplementaires($BASE, FALSE); if (!$result) { exit_error($TITRE, 'Le code transmis est invalide ou périmé (base inexistante).'); } } // Récupération des données de l'utilisateur $DB_ROW = DB_STRUCTURE_PUBLIC::DB_recuperer_user_for_new_mdp('user_pass_key', $user_pass_key); if (empty($DB_ROW)) { exit_error($TITRE, 'Le code transmis est invalide ou périmé (absence de correspondance).'); } if (crypter_mdp($DB_ROW['user_id'] . $DB_ROW['user_email'] . $DB_ROW['user_password'] . $DB_ROW['user_connexion_date']) != $user_pass_key) { exit_error($TITRE, 'Le code transmis est périmé (incompatible avec les données actuelles).'); } // Prendre en compte la demande de changement de mdp $newpass = fabriquer_mdp(); // On ne transmet pas de profil car necessite sinon une variable de session non définie à ce stade. DB_STRUCTURE_PUBLIC::DB_modifier_user_password_or_key($DB_ROW['user_id'], crypter_mdp($newpass), ''); // Affichage du résultat (confirmation + identifiants) ?> <p><label class="valide">Nouveau mot de passe généré avec succès !</label></p> <p>Veuillez noter vos identifiants de connexion :</p> <form>