TUTO PHP - Créer un espace membre 3/3 - Edition du profil

PrimFX Boris ('PrimFX') Le 29 mars 2015

Dans ce dernier épisode de la mini-série "Créer un espace membre", je vous propose de créer une page d'édition du profil afin que vos internautes puissent modifier leurs informations :-)

Code de la page d'édition du profil
<?php
session_start();

$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');

if(isset($_SESSION['id'])) {
   $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
   $requser->execute(array($_SESSION['id']));
   $user = $requser->fetch();
   if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']) {
      $newpseudo = htmlspecialchars($_POST['newpseudo']);
      $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
      $insertpseudo->execute(array($newpseudo, $_SESSION['id']));
      header('Location: profil.php?id='.$_SESSION['id']);
   }
   if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail']) {
      $newmail = htmlspecialchars($_POST['newmail']);
      $insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
      $insertmail->execute(array($newmail, $_SESSION['id']));
      header('Location: profil.php?id='.$_SESSION['id']);
   }
   if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2'])) {
      $mdp1 = sha1($_POST['newmdp1']);
      $mdp2 = sha1($_POST['newmdp2']);
      if($mdp1 == $mdp2) {
         $insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
         $insertmdp->execute(array($mdp1, $_SESSION['id']));
         header('Location: profil.php?id='.$_SESSION['id']);
      } else {
         $msg = "Vos deux mdp ne correspondent pas !";
      }
   }
?>
<html>
   <head>
      <title>TUTO PHP</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Edition de mon profil</h2>
         <div align="left">
            <form method="POST" action="" enctype="multipart/form-data">
               <label>Pseudo :</label>
               <input type="text" name="newpseudo" placeholder="Pseudo" value="<?php echo $user['pseudo']; ?>" /><br /><br />
               <label>Mail :</label>
               <input type="text" name="newmail" placeholder="Mail" value="<?php echo $user['mail']; ?>" /><br /><br />
               <label>Mot de passe :</label>
               <input type="password" name="newmdp1" placeholder="Mot de passe"/><br /><br />
               <label>Confirmation - mot de passe :</label>
               <input type="password" name="newmdp2" placeholder="Confirmation du mot de passe" /><br /><br />
               <input type="submit" value="Mettre à jour mon profil !" />
            </form>
            <?php if(isset($msg)) { echo $msg; } ?>
         </div>
      </div>
   </body>
</html>
<?php   
}
else {
   header("Location: connexion.php");
}
?>

A propos de l'auteur

PrimFX
Boris ('PrimFX')

Je m'appelle Boris, j'ai 22 ans et je suis passionné d'informatique. Suite à mes études (Licence Informatique puis MSc Computer Science au Trinity College Dublin), je gère l'entreprise Single Quote co-fondée en 2019 et je profite de mon temps libre pour partager ma passion à travers des vidéos & articles 😃

Votre commentaire

Vous devez être connecté pour poster un commentaire. Se connecter ou Créer un compte

Commentaires 44

  • Joey_czo Le 22 mars, à 19:58 | Répondre

    @Artcoco1
    Oula, ça date 😅

    Et merci, maintenant j'y arrive (j'aurais pus encore attendre longtemps)

  • Coco3444 Le 22 mars, à 18:48 | Répondre

    @Jojo_14 meme problème...

  • Artcoco1 Le 1 septembre, à 08:58 | Répondre

    @Jojo_14
    Tkp tu va progresser

  • Jojo_14 Le 21 avril, à 00:24 | Répondre

    Bonjour, j'ai essayer de faire une biographie, cela marche bien, la biographie va sur la bdd, mais je n'arrive pas à la récuperer pour la mettre sur le profil avec les "userinfo" ! Je comprends un peu le PHP mais la je ne comprends rien 😪

  • FR0Z Le 22 janvier, à 18:01 | Répondre

    Bonjours quelqu'un c'est comment faire pour faire les vérification pour le speudo et l'email pour l'edition tout comme dans l'inscription ?

  • nadia22 Le 9 décembre, à 18:06 | Répondre

    Très très bien expliqué, vraiment merci...

  • Rythmi Le 7 novembre, à 03:36 | Répondre

    je suis nouveau sur le site , mais un peu longtemps sur YouTube ... mais waaoh Boris c'est vraiment réussir, franchement et j’espère pouvoir égaliser ton niveau actuelle en programmation ☻☻☻

  • assokpe Le 18 septembre, à 13:11 | Répondre

    Bonjour Primfx, un grand merci pour ces tutos. Je voudrais ajouter d'autres informations pour compléter l’édition du profil ( nom , prenom, ville, pays, contact et site we etc) comme l’exemple de l'avatar qui à été ajouté apès connexion. Aidez-moi svp

  • xooit21 Le 6 février, à 11:51 | Répondre

    Bonjour,
    Quand j'insère une image dans "édit profil Php", mon image et bien enregistre dans ma bdd, et je suis bien redirigé vers ma page profil.php ou je vois bien mon image de profil. Le problème est que quand je quitte la page profil.php et que je reviens dessus mon image à disparu!

  • NatsuMaiii Le 3 février, à 16:37 | Répondre

    Bonjour primFX maintenant que j'ai réalisé ce système d'espace membre, comment puis-je réalisé une page accessible que par ce qui sont connecté ? merci d'avance pour ta réponse.

  • nox Le 26 janvier, à 07:22 | Répondre

    MERCI

  • gikou Le 19 janvier, à 14:59 | Répondre

    voici le code :)

  • gikou Le 19 janvier, à 14:58 | Répondre

    <?php
    session_start();

    $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');

    if(isset($_SESSION['id'])) {
    $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
    $requser->execute(array($_SESSION['id']));
    $user = $requser->fetch();
    if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']) {
    $newpseudo = htmlspecialchars($_POST['newpseudo']);
    $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
    $insertpseudo->execute(array($newpseudo, $_SESSION['id']));
    header('Location: profil.php?id='.$_SESSION['id']);
    }
    if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail']) {
    $newmail = htmlspecialchars($_POST['newmail']);
    $insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
    $insertmail->execute(array($newmail, $_SESSION['id']));
    header('Location: profil.php?id='.$_SESSION['id']);
    }
    if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2'])) {
    $mdp1 = sha1($_POST['newmdp1']);
    $mdp2 = sha1($_POST['newmdp2']);
    if($mdp1 == $mdp2) {
    $insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
    $insertmdp->execute(array($mdp1, $_SESSION['id']));
    header('Location: profil.php?id='.$_SESSION['id']);
    } else {
    $msg = "Vos deux mdp ne correspondent pas !";
    }
    }
    ?>
    <html>
    <head>
    <title>TUTO PHP</title>
    <meta charset="utf-8">
    </head>
    <body>
    <div align="center">
    <h2>Edition de mon profil</h2>
    <div align="left">
    <form method="POST" action="" enctype="multipart/form-data">
    <label>Pseudo :</label>
    <input type="text" name="newpseudo" placeholder="Pseudo" value="<?php echo $user['pseudo']; ?>" /><br /><br />
    <label>Mail :</label>
    <input type="text" name="newmail" placeholder="Mail" value="<?php echo $user['mail']; ?>" /><br /><br />
    <label>Mot de passe :</label>
    <input type="password" name="newmdp1" placeholder="Mot de passe"/><br /><br />
    <label>Confirmation - mot de passe :</label>
    <input type="password" name="newmdp2" placeholder="Confirmation du mot de passe" /><br /><br />
    <input type="submit" value="Mettre à jour mon profil !" />
    </form>
    <?php if(isset($msg)) { echo $msg; } ?>
    </div>
    </div>
    </body>
    </html>
    <?php
    }
    else {
    header("Location: connexion.php");
    }
    ?>

  • kratos07 Le 25 juin, à 13:32 | Répondre

    bonjour, ma question va peut etre paraitre stupide mais je veut faire disparaitre connexion et inscription pour les remplacer par mon profil et deconnexion qu en la personne se connecte. Dois je cree une 2 eme page ou il y a t il un code qui me le permetrais de le faire sur toute mes page?

  • Zbuu Le 23 mars, à 02:26 | Répondre

    @zoox tu as bien un session_start sur la page ou tu te fais "déconnecté" ?

  • zoox Le 19 mars, à 20:36 | Répondre

    Salut,
    Super le tuto en 3 parties, il m'a beaucoup aidé, cependant j'ai une question, je n'arrive pas a garder ma session active lors des changements de pages, à chaque fois elle se déconnecte. Pourrais tu me dire comment faire avec un bout de code svp.
    Merci beaucoup

  • ets_raphael Le 7 mars, à 20:31 | Répondre

    @Lugnals T'as malheureusement raison.. Il doit perdre beaucoup de monde comme ca, s'il aurait mis des dons pour tout sont travail ca serait bien plus honnête et personnellement t'en aurais eu de l'argent de ma part :/

  • Lugnals Le 18 janvier, à 11:48 | Répondre

    Ou est passer la passion pour crée des sites internet ? Tu es pas sensé aider ta communauté dans ce domaine ? On doit payer pour voir les codes des sites non mais c'est quoi ce bordel ? . Je vais pas dire que tu fais ça que pour l'argent car il y a énormément de taf derrière tes vidéos mais je vois pas l’intérêt de faire payer pour montrer des codes de site internet, surtout qu'on les vois dans ta vidéo. Ton système de compte prénium et est une arnaque et ne sert à rien du tout. Sur ce je te souhaite une bonne continuation je vais recherche une autre personne pour m'aider dans mon projet de site internet.

  • Banstlol Le 28 décembre, à 17:50 | Répondre

    @MagieEtTutos Je vois ça et te tiens au courant, merci!

  • ViXo Le 27 décembre, à 19:04 | Répondre

    @Banstlol Alors, soit :
    Tu n'as pas mit de balise <form> autour de tes input (<form method="POST" action="">)
    Soit c'est à cause du fait que le PHP est au dessous du code HTML mais je ne suis pas sur que ça pose un problème
    Soit c'est à cause des espaces dans les UPDATE (array($dokkan, $_SESSION['id']))

  • Banstlol Le 26 décembre, à 13:49 | Répondre

    Bonjour, j'ai essayé de rajouter des champs, mais ma bdd ne se modifie pas: voici ce que j'ai rajouté au formulaire, et aussi la requête demandée. Pourquoi celà ne fonctionne pas? Merci pour l'aide
    [code]<label>CA Dokkan Battle :</label>
    <input type="text" name="dokkan" placeholder="Dokkan" value="<?php echo $user['dokkan']; ?>" /></br></br>
    <label>Personnage favori :</label>
    <input type="text" name="personnage" placeholder="Personnage" value="<?php echo $user['personnage']; ?>" /></br></br>

       if(isset($_POST['dokkan']) AND !empty($_POST['dokkan']) AND $_POST['dokkan'] != $user['dokkan']) {
          $dokkan = htmlspecialchars($_POST['dokkan']);
          $insertdokkan = $bdd->prepare("UPDATE membre SET dokkan = ? WHERE id = ?");
          $insertdokkan->execute(array($dokkan, $_SESSION['id']));
          header('Location: profil.php?id='.$_SESSION['id']);
       }
             if(isset($_POST['personnage']) AND !empty($_POST['personnage']) AND $_POST['personnage'] != $user['personnage']) {
          $personnage = htmlspecialchars($_POST['personnage']);
          $insertpersonnage = $bdd->prepare("UPDATE membre SET personnage = ? WHERE id = ?");
          $insertpersonnage->execute(array($dokkan, $_SESSION['id']));
          header('Location: profil.php?id='.$_SESSION['id']);
       }
    [/code]

  • eclipse242 Le 3 décembre, à 03:55 | Répondre

    Après vérification j'ai pu m'en sortir, now il passe correctement

  • diallo Le 2 décembre, à 02:59 | Répondre

    merci bro je suis debutant mais je pourrei me debrouillee avec tes exellent tutos

  • eclipse242 Le 1 décembre, à 20:26 | Répondre

    Salut,
    j'ai quelque difficulté avec la modification du password.
    Pseudo et email passent mais le password ne se modifie pas

  • belpas Le 30 novembre, à 12:10 | Répondre

    Bonjour;
    merci pour ce tuto qui m'a permis de gagner beaucoup de temps . Cependant j'ai un soucis .Mon appli a trois types de users (commerciaux medecins et patients) en affet , les commerciaux seront crée par moi mais ils aurront la possibilité de creer des patients . Comment faire pour diriger chacun vers les pages qui lui sont dédiées ??
    merci de vos réponses

  • toufik Le 20 août, à 14:45 | Répondre

    merci

  • bilaldu60 Le 28 juillet, à 23:16 | Répondre

    up

  • bilaldu60 Le 24 juillet, à 08:30 | Répondre

    Bonjour a tous
    tout d'abord un grand merci pour tous ces tutos.J'ai suivi ce tuto et le resultat correspond bien aux attentes que j'en avais.Je suis nul en php,enfin je debute.Pour l'instant je me contente de faire des copiés collés et d'adapter les codes a ma configuration(Je suis sur un raspberry pi B).
    J'aimerai ajouter une condition a la page connexion.J'aimerai que l'utilisateur ne puisse pas se connecter si il n'a pas confirmé son inscription.J'ai bien compris qu'il fallait ajouter une requéte.Mais je galére je ne connais ni la syntaxe a employé et ni ou la placer dans le code.
    Si il y a une ame charitable ou méme si le grand primfx lui meme pourais me répondre,alors je suis preneur.
    Bon week-end a tous.

  • justemilieu Le 23 juillet, à 07:00 | Répondre

    euh autant pour moi mon message ci-dessous s'adressait plutôt à Rodrigue

  • justemilieu Le 23 juillet, à 06:58 | Répondre

    @jackymichel Bonjour,
    Par rapport à ta 1ère question je crois qu'il faut aller revoir plutôt le code du tuto "créer espace membre partie 1/3" qui traite l'inscription.
    $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
    $insertmbr->execute(array($pseudo, $mail, $mdp));
    $erreur = "Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>";
    Résultat: Et si tu veux te retrouver avec une page qui ne contient plus que le message:"votre compte a été bien créé" "Me connecter" là il faut que tu crée une nouvellepage et que tu la lies avec la page d'inscription en la déclarant dans le paramètre "action" sur ta balise <form method="" action="nouvellepage.php">...
    Pas d'idée pour la seconde question

  • Rodrigue Le 23 juillet, à 02:07 | Répondre

    je vais dire comment choisir une image dans sa machine local et l'importer dans la base de donnée, comme on fait les images de profil

  • Rodrigue Le 23 juillet, à 01:41 | Répondre

    Et comment tu fais pour mettre l'image du profil sur le profil???

  • Rodrigue Le 23 juillet, à 01:41 | Répondre

    salut, super ton tuto, que ferai-je au cas je voudrais qu'après avoir entré les informations concernant l'inscription par l'utilisateur, j'aimerai que le formule disparaissent, qu'il ne reste que le message de "votre compte a été créé, Me connecter. Comment faire stp??!!!!
    et je voudrais aussi sur mon profil créer un formulaire de vote (sondage) quant l'utilisateur aurait voté, que son formulaire de vote disparaissent et qu'on lui disent qu'il a déjà voté, même à sa prochaine connexion???
    Merci d'avance, j'attends.

  • jackymichel Le 12 juillet, à 17:01 | Répondre

    C TROP BIEN CE CODE POUR MON SITE PTDR !!!!

  • Blast0Kd Le 16 avril, à 17:54 | Répondre

    @Thibault_Feugere Pourquoi tu dis ça ?

  • Moongm Le 16 avril, à 15:33 | Répondre

    Excellent tuto ! Merci :'p

  • mimi Le 3 février, à 00:47 | Répondre

    Félicitations.
    J'aimerai entrer en contact .
    je suis dans la base : pseudo .....mimi
    Merci

  • PrimFX Le 10 janvier, à 16:51 | Répondre

    @Skarlyne Salut ! Si par "page personnelle" tu entends une page qui soit unique à l'utilisateur connecté, au lieu de passer par un ID provenant de l'URL, il faut simplement utiliser l'ID de session de la personne connectée ;-)
    J'espère avoir répondu à ta question :p
    @+

  • Skarlyne Le 8 janvier, à 23:31 | Répondre

    @PrimFX Bonjour, Merci pour ton savoir c'est très utile pour le débutant que je suis x). Mais j'ai une question, Comment faire en sorte que la page soit strictement personnel, qu'elle ne soit pas modifiable dans l'url ? Merci.

  • ROYMAX Le 18 décembre, à 16:45 | Répondre

    Bonjour je vous remercie tout d'abord pour le travail que vous faites pour les apprenants. je suis nouveau en php. j'ai vu vos 3 tutos vidéos sur l'espace membres, et j'aimerai savoir comment suivre automatique une 'id' dans tous pages d'un site. Pour la redirection avec le header("Location:acceuil.php?id=".$_SESSION['id']); tout va bien. ET s'il faut cliquer sur un lien pour une autre page, comment faire ? je compte sur votre bonne compréhension merci.

  • duvalkede Le 19 novembre, à 20:01 | Répondre

    Moi sa modifie bien mon pseudo dans la bdd mais pas dans le profil ca laisse l'ancien
    il faut deco reco pour que sa l'affiche
    dans profil a l'endroit du pseudo j'ai mis '.$_SESSION['pseudo'].' c'est a cause de sa , que faut-il que je met a la place? PrimFX a mit '. $userinfo['pseudo'].' mais moi ca ne maffiche rien

  • PrimFX Le 14 juillet, à 14:14 | Répondre

    @sosoa Salut ! Avec le système que j'ai présenté dans cette vidéo il est possible que le contenu de chaque profil soit publique ! (simplement en fonction de la variable d'ID du profil de l'utilisateur actuel qui transite dans l'URL :D)

  • sosoa Le 12 juillet, à 18:41 | Répondre

    Bonjour, comment procéder pour que le contenu d'un profil quelconque soit visible au publique?

  • dqfjsqhgfdqhvsq Le 29 mars, à 20:01 | Répondre

    Hum j'ai envie de pleurer moi ... sa pue la fin du php ;(