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

Boris Flesch
Boris Flesch

Salut tout le monde ! Je m'appelle Boris, j'ai 16 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

24 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 Pierredu16500

    Pierredu16500

    8 Septembre 2017 à 17:10

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

    Merci ! Sourire

  • Photo de profil de ahgtfds

    ahgtfds

    19 Juillet 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 Juillet 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 wail

    wail

    6 Avril 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 Lauraguinness

    Lauraguinness

    4 Février 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 zartaj12345

    zartaj12345

    26 Janvier 2017 à 02:43

    @keenutt66

    Salut

    Pour moi tout est nikel...

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

  • Photo de profil de keenutt66

    keenutt66

    18 Janvier 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 nerdya

    nerdya

    3 Janvier 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 eclipse242

    eclipse242

    4 Décembre 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 bilaldu60

    bilaldu60

    31 Juillet 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 bilaldu60

    bilaldu60

    31 Juillet 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

    30 Juillet 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 Preyor

    Preyor

    30 Juin 2016 à 22:11

    @PrimFX pourrais-tu mettre le code ?

  • Photo de profil de MagieEtTutos

    MagieEtTutos

    6 Mai 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 niluca

    niluca

    21 Avril 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 FireWin

    FireWin

    15 Avril 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 MagieEtTutos

    MagieEtTutos

    9 Avril 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 Nobodief

    Nobodief

    14 Mars 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 Ranster

    Ranster

    23 Février 2016 à 17:50

    Bravo ! Et merci !

  • Photo de profil de c24

    c24

    15 Février 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 dream09

    dream09

    25 Janvier 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 Grand sourire Merci !

  • Photo de profil de ekios

    ekios

    10 Janvier 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 Sourire

  • Photo de profil de PrimFX

    PrimFX

    10 Janvier 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 ? Tire la langue

  • Photo de profil de ekios

    ekios

    6 Janvier 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 Tire la langue

    Si tu pouvais m'aider, merci !

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