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);
Beispiel #2
0
// 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>