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


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
PrimFX

Salut tout le monde ! Je m'appelle Boris, j'ai 18 ans et je suis passionné d'informatique et de technologie. Je partage cette passion à travers mes vidéos que tu peux retrouver sur YouTube sous le nom de PrimFX ou bien sur ce site bien sûr (tutoriels de programmation (HTML, CSS, PHP), gameplays, vlogs high-tech...). @+

A voir aussi

36 Commentaires

POSTER UN COMMENTAIRE

Vous devez être connecté pour pouvoir poster un commentaire...

Pas encore de compte ? Créez-en un ici !



  • Photo de profil de Thibault Feugère

    Thibault Feugère

    29 March 2015 à 20:01

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

  • Photo de profil de sosoa

    sosoa

    12 July 2015 à 18:41

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

  • Photo de profil de PrimFX

    PrimFX | Membre Premium

    14 July 2015 à 14:14

    @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 😄)

  • Photo de profil de duvalkede

    duvalkede

    19 November 2015 à 20:01

    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

  • Photo de profil de ROYMAX

    ROYMAX

    18 December 2015 à 16:45

    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.

  • Photo de profil de Skarlyne

    Skarlyne

    08 January 2016 à 23:31

    @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.

  • Photo de profil de PrimFX

    PrimFX | Membre Premium

    10 January 2016 à 16:51

    @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 😋

    @+

  • Photo de profil de mimi

    mimi

    03 February 2016 à 00:47

    Félicitations.

    J'aimerai entrer en contact .

    je suis dans la base : pseudo .....mimi

    Merci

  • Photo de profil de Moongm

    Moongm

    16 April 2016 à 15:33

    Excellent tuto ! Merci :'p

  • Photo de profil de Blast0Kd

    Blast0Kd

    16 April 2016 à 17:54

    @Thibault_Feugere Pourquoi tu dis ça ?

  • Photo de profil de jackymichel

    jackymichel

    12 July 2016 à 17:01

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

  • Photo de profil de Rodrigue

    Rodrigue

    23 July 2016 à 01:41

    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.

  • Photo de profil de Rodrigue

    Rodrigue

    23 July 2016 à 01:41

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

  • Photo de profil de Rodrigue

    Rodrigue

    23 July 2016 à 02:07

    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

  • Photo de profil de justemilieu

    justemilieu

    23 July 2016 à 06:58

    @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

  • Photo de profil de justemilieu

    justemilieu

    23 July 2016 à 07:00

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

  • Photo de profil de bilaldu60

    bilaldu60

    24 July 2016 à 08:30

    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.

  • Photo de profil de bilaldu60

    bilaldu60

    28 July 2016 à 23:16

    up

  • Photo de profil de toufik

    toufik

    20 August 2016 à 14:45

    merci

  • Photo de profil de belpas

    belpas

    30 November 2016 à 12:10

    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

  • Photo de profil de eclipse242

    eclipse242

    01 December 2016 à 20:26

    Salut,

    j'ai quelque difficulté avec la modification du password.

    Pseudo et email passent mais le password ne se modifie pas

  • Photo de profil de diallo

    diallo

    02 December 2016 à 02:59

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

  • Photo de profil de eclipse242

    eclipse242

    03 December 2016 à 03:55

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

  • Photo de profil de Banstlol

    Banstlol

    26 December 2016 à 13:49

    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

    <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']);
       }

  • Photo de profil de MagieEtTutos

    MagieEtTutos

    27 December 2016 à 19:04

    @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']))

  • Photo de profil de Banstlol

    Banstlol

    28 December 2016 à 17:50

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

  • Photo de profil de Lugnals

    Lugnals

    18 January 2017 à 11:48

    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.

  • Photo de profil de ets_raphael

    ets_raphael

    07 March 2017 à 20:31

    @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 :/

  • Photo de profil de zoox

    zoox

    19 March 2017 à 20:36

    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

  • Photo de profil de Zbuu

    Zbuu

    23 March 2017 à 02:26

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

  • Photo de profil de kratos07

    kratos07

    25 June 2017 à 13:32

    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?

  • Photo de profil de gikou

    gikou

    19 January 2018 à 14:58

    <?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");

    }

    ?>

  • Photo de profil de gikou

    gikou

    19 January 2018 à 14:59

    voici le code 😀

  • Photo de profil de nox

    nox

    26 January 2018 à 07:22

    MERCI

  • Photo de profil de NatsuMaiii

    NatsuMaiii

    03 February 2018 à 16:37

    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.

  • Photo de profil de xooit21

    xooit21

    06 February 2018 à 11:51

    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!