Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
Bonjour suite à la formation (mot de passe oubliée) je souhaitait que les membres puissent changez leur mot de passe ou faire un lien pour qu'il choisissent leur nouveaux mot de passe
Je suis content car je l'ai fait pour la première fois (personaliser un code )😄😄😄.
Voici le code :
<?php
session_start();
include('bd/connexionDB.php');
if (!isset($_SESSION['id'])){
header('Location: index.php');
exit;
}
// On récupère les informations de l'utilisateur connecté
$afficher_profil = $DB->query("SELECT *
FROM utilisateur
WHERE id = ?",
array($_SESSION['id']));
$afficher_profil = $afficher_profil->fetch();
if(!empty($_POST)){
extract($_POST);
$valid = true;
if (isset($_POST['modification'])){
$nom = htmlentities(trim($nom));
$prenom = htmlentities(trim($prenom));
$mail = htmlentities(strtolower(trim($mail)));
$mdp = trim($mdp);
$new_pass_crypt = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$");
if(empty($nom)){
$valid = false;
$er_nom = "Il faut mettre un nom";
}
if(empty($prenom)){
$valid = false;
$er_prenom = '<p style="color:red">Il faut mettre un prénom</p>';
}
if(empty($mail)){
$valid = false;
$er_mail = '<p style="color:red">Il faut mettre un mail</p>';
}elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){
$valid = false;
$er_mail = '<p style="color:red">Le mail n\'est pas valide</p>';
}else{
$req_mail = $DB->query("SELECT mail
FROM utilisateur
WHERE mail = ?",
array($mail));
$req_mail = $req_mail->fetch();
if ($req_mail['mail'] <> "" && $_SESSION['mail'] != $req_mail['mail']){
$valid = false;
$er_mail = '<p style="color:red">Ce mail existe déjà</p>';
}
}
if(empty($mdp)){
$valid = false;
$er_mdp = '<p style="color:red">Il faut mettre un mot de passe</p>';
}
if ($valid){
$DB->insert("UPDATE utilisateur SET prenom = ?, nom = ?, mail = ?, mdp = ?
WHERE id = ?",
array($prenom, $nom,$mail,$new_pass_crypt, $_SESSION['id']));
$_SESSION['nom'] = $nom;
$_SESSION['prenom'] = $prenom;
$_SESSION['mail'] = $mail;
$_SESSION['mdp'] = $new_pass_crypt;
header('Location: profil.php');
exit;
}
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Modifier votre profil</title>
</head>
<body>
<div>Modification</div>
<form method="post">
<input type="text" placeholder="Votre nom" name="nom" value="<?php if(isset($nom)){ echo $nom; }else{ echo $afficher_profil['nom'];}?>" required>
<input type="text" placeholder="Votre prénom" name="prenom" value="<?php if(isset($prenom)){ echo $prenom; }else{ echo $afficher_profil['prenom'];}?>" required>
<input type="password" placeholder="Votre mot de passe" name="mdp" value="" >
<input type="email" placeholder="Adresse mail" name="mail" value="<?php if(isset($mail)){ echo $mail; }else{ echo $afficher_profil['mail'];}?>" required>
<button type="submit" name="modification">Modifier</button>
<?php
if (isset($er_nom)){
?>
<div><?= $er_nom ?></div>
<?php
}
?>
<?php
if (isset($er_prenom)){
?>
<div><?= $er_prenom ?></div>
<?php
}
?>
<?php
if (isset($er_mdp)){
?>
<div><?= $er_mdp ?></div>
<?php
}
?>
<?php
if (isset($er_mail)){
?>
<div><?= $er_mail ?></div>
<?php
}
?>
</form>
</body>
</html>
Dans ce cas, copie sur un autre code déjà mis dans le tiens, et tu remplaces par exemple e-mail par passwd ou le nom exacte de ton champs de ta table user
Oui c'est exactement cela .
Le code que tu as mis ci-dessous est le code pour modifier des informations sur un utilisateur ?
Tu souhaites intégrer le changement de mot de passe dedans ?
Sorry😅😅 je me suis trompé de code : voici le bon code :
<?php
session_start();
include('bd/connexionDB.php');
if (!isset($_SESSION['id'])){
header('Location: index.php');
exit;
}
// On récupère les informations de l'utilisateur connecté
$afficher_profil = $DB->query("SELECT *
FROM utilisateur
WHERE id = ?",
array($_SESSION['id']));
$afficher_profil = $afficher_profil->fetch();
if(!empty($_POST)){
extract($_POST);
$valid = true;
if (isset($_POST['modification'])){
$nom = htmlentities(trim($nom));
$prenom = htmlentities(trim($prenom));
$mail = htmlentities(strtolower(trim($mail)));
if(empty($nom)){
$valid = false;
$er_nom = "Il faut mettre un nom";
}
if(empty($prenom)){
$valid = false;
$er_prenom = "Il faut mettre un prénom";
}
if(empty($mail)){
$valid = false;
$er_mail = "Il faut mettre un mail";
}elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){
$valid = false;
$er_mail = "Le mail n'est pas valide";
}else{
$req_mail = $DB->query("SELECT mail
FROM utilisateur
WHERE mail = ?",
array($mail));
$req_mail = $req_mail->fetch();
if ($req_mail['mail'] <> "" && $_SESSION['mail'] != $req_mail['mail']){
$valid = false;
$er_mail = "Ce mail existe déjà";
}
}
if ($valid){
$DB->insert("UPDATE utilisateur SET prenom = ?, nom = ?, mail = ?
WHERE id = ?",
array($prenom, $nom,$mail, $_SESSION['id']));
$_SESSION['nom'] = $nom;
$_SESSION['prenom'] = $prenom;
$_SESSION['mail'] = $mail;
header('Location: profil.php');
exit;
}
}
}
?>
Quelle erreur obtiens-tu ?
Ton code m'a l'air d'être correcte pour ton changement de mot de passe
Bonjour @Didoub74
Pour faire un système de changement de mot de passe, il faut que tu fasses un formulaire de l’espace membre avec une validation qui te fait un UPDATE par rapport au PSEUDO ou l’ID.
Donc sa donnerai un truc du genre :
('UPDATE user SET passwd="'.$_POST["newpass"].'" WHERE id = "'.$_GET['id'].'" ');
/!\ Je n’ai en aucuns cas tester mon code, je l’ai fais de tête pour te donner une idée puis depuis mon tel.
Moi je ne suivait pas les vidéos mais que les formations écrite
Hello @Didoub74,
As-tu bien suivie le tutoriel vidéo également ? 🤔
En toute logique, lorsqu'un membre à oublié son mot de passe, il clique sur "Mot de passe oublié" au formulaire, il reçoit un email de confirmation après qu'il est saisie son email et il est redirigé ensuite sur une page pour recréer un nouveau mot de passe et récupérer son compte.