TUTO PHP - Ajouter une photo de profil / avatar


Je vous ai déjà montré dans une mini-série de 3 épisodes comment créer un espace membre sur votre site internet. Je vous propose donc aujourd'hui de voir comment y ajouter un petit système de gestion d'avatars ;-)

  • Code du traitement de l'avatar en PHP :
Veuillez vous connecter pour afficher le code.
Pas encore de compte ? Créez-en un ici !


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

25 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 ekios

    ekios

    06 January 2016 à 01:51

    Bonjour PrimFX,

    Alors voila j'ai fais ton tuto à la lettre cependant il me dit sort le format invalide.

    Voila l'image du code (pour éviter de surcharger le commentaire 😋

    Si tu pouvais m'aider, merci !

    http://puu.sh/ml4oT/1e798dd328.png

  • Photo de profil de PrimFX

    PrimFX | Membre Premium

    10 January 2016 à 16:46

    @ekios Salut ! Peux-tu me dire à quelle est la ligne indiquée dans l'erreur ? Enfin l'erreur c'est une erreur PHP dans le code (qui s'affiche dans un genre de bloc orange) ou bien ça t'affiche un de tes messages d'erreur dans une variable $msg ? 😋

  • Photo de profil de ekios

    ekios

    10 January 2016 à 18:13

    @PrimFX Bonjour, merci de ta réponse

    Néanmoins j'ai déjà résolu mon problème sur le forum de Openclassroom ^^ Il s'agisait d'une simple erreur de majuscule à la ligne 7 (Avatar).



    Très beau tuto au passage, je vais continuer à te suivre 😀

  • Photo de profil de dream09

    dream09

    25 January 2016 à 20:16

    Bonjour, j'ai hésité à poster un commentaire car lors que j'uploadé mon image, j'avais le message d'erreur comme quoi il y avait une erreur du côté serveur car je n avais pas pensais a changer les droits sur le dossier d'upload. Voilà, si cela peut en aider certains...

    Très bon tuto sinon, continue ainsi, mais si tu pouvais à l'avenir uploader le code source s'il te plaît 😄 Merci !

  • Photo de profil de c24

    c24

    15 February 2016 à 15:33

    Salut PrimFX,

    je viens vers toi car j'ai un problème j'ai suivi ton tuto à la lettre j'ai vérifier 10 fois ce qu'il cloché et je n'ai pas de message d 'erreur et pourtant ma photo quand je fais parcourir et éditer mon profil ne me l'affiche ni sur mon profil ni dans ma base donnée.

    Quel et la solution ? stp merci d'avance

  • Photo de profil de Ranster

    Ranster

    23 February 2016 à 17:50

    Bravo ! Et merci !

  • Photo de profil de Nobodief

    Nobodief

    14 March 2016 à 00:44

    Vous pouvez également faire un raccourci lorsque vous enregistrez l'avatar sur la base de données, comme nous avons spécifier dans la variable $chemin l'adresse du dossier et le nom de l'image, au lieu de refaire une grande ligne il aurais été plus simple de mettre 'avatar' => $chemin.



    Très bon tutoriel, j'apprend beaucoup avec toi, continue.

  • Photo de profil de MagieEtTutos

    MagieEtTutos

    09 April 2016 à 11:55

    @c24 As-tu pensé à mettre le enctype="multipart/form-data" dans le <form> :

    <form method="POST" action="" enctype="multipart/form-data">

    # Le formulaire

    </form>

  • Photo de profil de FireWin

    FireWin

    15 April 2016 à 11:18

    Bonjour, j'ai rencontré un problème, l'image ne s'enregistre pas dans ma base de donnée :

    if(isset($_FILES['avatars']) AND !empty($_FILES['avatars']['name']))

    {

    $tailleMax = 2097152;

    $extensionsValides = array('jpg', 'jpeg', 'gif', 'png');

    if ($_FILES['avatars']['size'] <= $tailleMax)

    {

    $extensionUpload = strtolower(substr(strrchr($_FILES['avatars']['name'], '.'), 1));

    if(in_array($extensionUpload, $extensionsValides))

    {

    $chemin = "membres/avatars/".$_SESSION['id'].".".$extensionUpload;

    $resulat = move_uploaded_file($_FILES['avatars']['tmp_name'], $chemin);

    if($resulat)

    {

    $updateavatars = $bdd->prepare('UPDATE membres SET avatars = :avatars WHERE id = :id');

    $updateavatars->execute(array(

    'avatars' => $_SESSION['id'].".".$extensionUpload,

    'id' => $_SESSION['id']

    ));

    header('Location: profil.php?id='.$_SESSION['id']);

    }

    else

    {

    $msg = "Erreur durant l'importation de votre photo de profil.";

    }

    }

    else

    {

    $msg = "Votre photo de profil doit être au format jpg, jpeg, gif ou png.";

    }

    }

    else

    {

    $msg = "Votre photo de profil ne doit pas dépasser 2Mo.";

    }

    }

  • Photo de profil de niluca

    niluca

    21 April 2016 à 17:59

    PrimFX est ce que tu pourrais mettre le code s'il te plait

    car il me dit une erreur et j’arrive pas a la trouver

  • Photo de profil de MagieEtTutos

    MagieEtTutos

    06 May 2016 à 17:40

    PrimFX tu peux mettre le code de ce tuto stp car mon image s'enregistre pas et j'arrive pas à trouvé l'erreur

  • Photo de profil de Preyor

    Preyor

    30 June 2016 à 22:11

    @PrimFX pourrais-tu mettre le code ?

  • Photo de profil de bilaldu60

    bilaldu60

    30 July 2016 à 22:38

    @FireWin

    Salut

    Je suis nul en PHP et comme il n'y a pas le code source je tape en méme temp que je regarde la video.Malgres un grand nombre de "pause" et de retour en arriere(en regardant la video)j'arrivais a une page blanche(sans doute une accolade que je zapais ou autre)

    Comme je m'en sortais pas j'ai copié le code que tu as mis dans ton commentaire et j'avais le méme probleme que toi.

    je vois que tu mest souvent "avatars" pour "avatar"

    Je ne pourais tester que dans 1 h ou 2 et je reposterai si c'est la solution.

  • Photo de profil de bilaldu60

    bilaldu60

    31 July 2016 à 01:19

    @FireWin

    C'etait bien ça.J'ai enlever tous les "s" que tu avais mis au bout de "avatar" sauf dans la ligne:

    $chemin = "membres/avatars/".$_SESSION['id'].".".$extensionUpload;

    Car le dossier que j'ai creé pour stocker les avatars des membres s'appelle bien: membres/avatars/

    J'usque la tous va bien,ça enregistre bien l'image dans le dossier et ma base de donné et bien mis à jour.

    Il me reste plus qu'a afficher la photos dans "profil.php".

    J'y retourne

  • Photo de profil de bilaldu60

    bilaldu60

    31 July 2016 à 01:37

    Bon et bien tout est ok,mais quel galére quand on est débutant et qu'on a pas le code source.

    Merci encore a primefx pour cet excellent tuto

  • Photo de profil de eclipse242

    eclipse242

    04 December 2016 à 16:52

    vu que j'ai changé d'environnement de travaille j'ai assez galéré et finalement j'ai réussi. Merci pour ce tuto et pour ton esprit de partage c'est super

  • Photo de profil de nerdya

    nerdya

    03 January 2017 à 15:58

    Bonjour j'ai un problème mes avatars s'affiche dans mon dossier mais pas dans ma base de donné . cela est il embêtant ou non? merci de votre aide.

  • Photo de profil de keenutt66

    keenutt66

    18 January 2017 à 05:45

    Bonjour ,

    L'image ne s'affiche pas, j ai bien vérifié le lien src , regardé mes lignes de code et rien , pas de message d'erreur , d' ou cela pourrait il venir , merci de votre aide ou d'une piste .

    Merci pour votre aide

  • Photo de profil de zartaj12345

    zartaj12345

    26 January 2017 à 02:43

    @keenutt66

    Salut

    Pour moi tout est nikel...

    partage tes lien peut être on peut t'aider!!!

  • Photo de profil de Lauraguinness

    Lauraguinness

    04 February 2017 à 16:04

    Bonjour à tous ! 



    Même problème que keenutt66... 

    Tout est ok dans le code,  le chemin est nickel, l'image s'inscrit bien dans le dossier avatar et pourtant elle ne s'affiche pas sur ma page... 

    Je désespère ! ;( 



    Merci de votre aide... 

  • Photo de profil de wail

    wail

    06 April 2017 à 19:44

    @keenutt66 je sais que ça fait un moment que vous avez posté votre message ;au fait j'ai la meme erreur que vous si vous pourriez m'aider !

  • Photo de profil de ahgtfds

    ahgtfds

    19 July 2017 à 14:08

    <?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($_FILES['avatar']) AND !empty($_FILES['avatar']['name'])) {

    $tailleMax = 2097152;

    $extensionsValides = array('jpg', 'jpeg', 'gif', 'png');

    if($_FILES['avatar']['size'] <= $tailleMax) {

    $extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));

    if(in_array($extensionUpload, $extensionsValides)) {

    $chemin = "membres/avatars/".$_SESSION['id'].".".$extensionUpload;

    $resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);

    if($resultat) {

    $updateavatar = $bdd->prepare('UPDATE membres SET avatar = :avatar WHERE id = :id');

    $updateavatar->execute(array(

    'avatar' => $_SESSION['id'].".".$extensionUpload,

    'id' => $_SESSION['id']

    ));

    header('Location: profil.php?id='.$_SESSION['id']);

    } else {

    $msg = "Erreur durant l'importation de votre photo de profil";

    }

    } else {

    $msg = "Votre photo de profil doit être au format jpg, jpeg, gif ou png";

    }

    } else {

    $msg = "Votre photo de profil ne doit pas dépasser 2Mo";

    }

    }



    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 !";

    }

    }

    ?>

  • Photo de profil de ahgtfds

    ahgtfds

    19 July 2017 à 14:08

    <?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($_FILES['avatar']) AND !empty($_FILES['avatar']['name'])) {

    $tailleMax = 2097152;

    $extensionsValides = array('jpg', 'jpeg', 'gif', 'png');

    if($_FILES['avatar']['size'] <= $tailleMax) {

    $extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));

    if(in_array($extensionUpload, $extensionsValides)) {

    $chemin = "membres/avatars/".$_SESSION['id'].".".$extensionUpload;

    $resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);

    if($resultat) {

    $updateavatar = $bdd->prepare('UPDATE membres SET avatar = :avatar WHERE id = :id');

    $updateavatar->execute(array(

    'avatar' => $_SESSION['id'].".".$extensionUpload,

    'id' => $_SESSION['id']

    ));

    header('Location: profil.php?id='.$_SESSION['id']);

    } else {

    $msg = "Erreur durant l'importation de votre photo de profil";

    }

    } else {

    $msg = "Votre photo de profil doit être au format jpg, jpeg, gif ou png";

    }

    } else {

    $msg = "Votre photo de profil ne doit pas dépasser 2Mo";

    }

    }



    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 !";

    }

    }

    ?>

  • Photo de profil de Pierredu16500

    Pierredu16500

    08 September 2017 à 17:10

    @ekios Salut, merci tu m'as sauvé la vie ! Effectivement, il suffit de faire un petit: sudo chmod 777 chemindudossierdelavatar

    Merci ! 😀

  • Photo de profil de Impact22

    Impact22

    29 November 2017 à 02:05

    Bonjour,

    J' ai un probleme avec la bdd, lorsque je cree la colonne "avatar" dans la table "membres", je ne peux plus inscrire de nouveau compte utilisateur. Si j'enleve la 5° colonne (celle de "avatar") je peu a nouveau inscrire de nouveau comptes dans la bdd. 

    Lorsque un compte est deja créé et que je rajoute la colonne "avatar", je peu ajouter le "fichier.jpg" sur le compte mais je ne peux toujours pas rajouter de compte.

    Merci de votre aide.

    Et bravo pour tes tutos.