Problème avatar

Ce topic a été résolu
papayou

papayou Le 20 octobre 2019 à 17:13 (Édité le 24 novembre 2019 à 21:07)

Bonjour,
j'ai un souci quand je valide mon image pour le mettre en avatar il me mais une erreur et rien ne s'affiche dans ma bdd

<?php require 'include/header.php';?>
<?php
session_start();

$bdd = new PDO('mysql:host=localhost;dbname=cismareuil;charset=utf8', 'mareuil', 'pomme60100');

if(isset($_SESSION['id'])) {
   $requser = $bdd->prepare("SELECT * FROM membre WHERE id = ?");
   $requser->execute(array($_SESSION['id']));
   $user = $requser->fetch();
   if(isset($_POST['newnom']) AND !empty($_POST['newnom']) AND $_POST['newnom'] != $user['nom']) {
      $newnom = htmlspecialchars($_POST['newnom']);
      $insertnom = $bdd->prepare("UPDATE membre SET nom = ? WHERE id = ?");
      $insertnom->execute(array($newnom, $_SESSION['id']));
      header('Location: profile.php?id='.$_SESSION['id']);
   }
   if(isset($_POST['newmdp']) AND !empty($_POST['newmdp'])) {
      $mdp = sha1($_POST['newmdp']);
         $insertmdp = $bdd->prepare("UPDATE membre SET password = ? WHERE id = ?");
         $insertmdp->execute(array($mdp, $_SESSION['id']));
         header('Location: profile.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 membre SET password = ? WHERE id = ?");
         $insertmdp->execute(array($mdp1, $_SESSION['id']));
         header('Location: profile.php?id='.$_SESSION['id']);
      } else {
         $msg = "Vos deux mots de passe ne correspondent pas !";
      }
    }
//----------------------------------------------------------------------------------------------------------------------------------------------
    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 = "avatar/".$_SESSION['id'].".".$extensionUpload;
         $resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
         if($resultat) {
            $updateavatar = $bdd->prepare('UPDATE membre SET avatar = :avatar WHERE id = :id');
            $updateavatar->execute(array(
               'avatar' => $_SESSION['id'].".".$extensionUpload,
               'id' => $_SESSION['id']
               ));
            header('Location: editionprofile.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";
   }
}
?>
<head>
  <title>Profil</title>
    <meta charset="utf-8">
  <link rel="stylesheet" href="css/inscription.css" media="all" />
</head>
         <div class="signup-form">
           <h1>Edition de mon profil</h1><br />
            <form method="POST" action="" enctype="multipart/form-data">
               <label style="color:#fff";>Nom :</label>
               <input type="text" name="nom" placeholder="Prénom.Nom" value="<?php echo $user['nom']; ?>" class="txtb"/>
               <label style="color:#fff";>Mot de passe :</label>
               <input type="password" name="newmdp1" placeholder="Votre mot de passe" class="txtb"/>
               <label style="color:#fff";>Confirmation mot de passe :</label>
               <input type="password" name="newmdp2" placeholder="Confirmez mot de passe" class="txtb"/>
               <label style="color:#fff";>Avatar :</label>
               <input type="file" name="avatar" value="Afficher Avatar" class="signup-text"/>
               <input type="submit" value="Mettre à jour" class="signup-btn"/>
            </form>
            <?php if(isset($msg)) { echo $msg; } ?>
         </div>
<?php
}
else {
   header("Location: index.php");
}
?>
<?php require 'include/footer.php';?>
didoub74

didoub74 Le 20 octobre 2019 à 22:51 (Édité le 20 octobre 2019 à 22:54)

De 1 essaye de remplacer
$bdd = new PDO('mysql:host=localhost;dbname=cismareuil;charset=utf8', 'mareuil', 'pomme60100');

par un fichier externe avec un include : fichier test dispo https://gist.github.com/didoub74/ef0e5f962316ea456efa5ff2ca5f50cc

De 2

Il y a t'il une erreur qui s'affiche si tu n'as pas activer les erreur active les grâce à ce site : https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/4238821-configurez-php-pour-visualiser-les-erreurs

De 3

Si ça ne marche toujours pas essaye de recommencer la vidéo en suivant bien tout
papayou

papayou Le 21 octobre 2019 à 08:00 (Édité le 21 octobre 2019 à 08:19)

je regarde ça aujourd'hui merci pour la réponse.
je viens de regarder et sa ne marche toujours pas je ne sais plus quoi faire et en plus ma mise à jours de mon profil ne fonctionne plus
didoub74

didoub74 Le 21 octobre 2019 à 08:42

Salut,
Est ce que il y a une erreur qui s'affiche ? Ou Y a t-il une page blanche
papayou

papayou Le 21 octobre 2019 à 13:03

il me met l'erreur de mon if et sa reste sur ma page normal et rien ne s'inscrit dans ma bdd
didoub74

didoub74 Le 23 octobre 2019 à 09:08

Salut essaye de regarder ce tuto c'est presque pareil
papayou

papayou Le 24 octobre 2019 à 18:26

Bonjour
oui j'ai vue sa marche en partie il me l'enregistre bien dans mon dossier mais pas dans ma basse de données
didoub74

didoub74 Le 28 octobre 2019 à 08:31 (Édité le 28 octobre 2019 à 08:32)

Salut désolé du retard 😅

Moi j'ai ce code : (page : avatar.php)
<?php
    session_start(); // Pour récupèrer nos données dans les variables : $_SESSION   
    include('connexionDB.php'); // Pour faire la connexion à notre base de données

    if(!empty($_POST)){
        extract($_POST); // On extrait toutes les informations
        $valid = true;

        if (isset($_POST['avatar'])){   // On se positionne sur le bon formulaire
            if (isset($_FILES['file']) and !empty($_FILES['file']['name'])) { // On vérifie qu'il y a bien un fichier

                $filename = $_FILES['file']['tmp_name']; // On récupère le nom du fichier
                list($width_orig, $height_orig) = getimagesize($filename); // On récupère la taille de notre fichier (l'image)

                if($width_orig >= 400 && $height_orig >= 400 && $width_orig <= 6000 && $height_orig <= 6000){ // On vérifie que la taille de l'image et correcte

                    $ListeExtension = array('jpg' => 'image/jpeg', 'jpeg'=>'image/jpeg', 'png' => 'image/png', 'gif' => 'image/gif');
                    $ListeExtensionIE = array('jpg' => 'image/pjpg', 'jpeg'=>'image/pjpeg');
                    $tailleMax = 5242880; // Taille maximum 5 Mo
                    // 2mo  = 2097152
                    // 3mo  = 3145728
                    // 4mo  = 4194304
                    // 5mo  = 5242880
                    // 7mo  = 7340032
                    // 10mo = 10485760
                    // 12mo = 12582912
                    $extensionsValides = array('jpg','jpeg'); // Format accepté

                    if ($_FILES['file']['size'] <= $tailleMax){ // Si le fichier et bien de taille inférieur ou égal à 5 Mo

                        $extensionUpload = strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)); // Prend l'extension après le point, soit "jpg, jpeg ou png"

                        if (in_array($extensionUpload, $extensionsValides)){ // Vérifie que l'extension est correct

                            $dossier = "public/avatars/" . $_SESSION['id'] . "/"; // On se place dans le dossier de la personne 

                            if (!is_dir($dossier)){ // Si le nom de dossier n'existe pas alors on le crée
                                mkdir($dossier);
                            }else{
                                if(file_exists("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']) && isset($_SESSION['avatar'])){
                                    unlink("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']);
                                }
                            }

                            $nom = md5(uniqid(rand(), true)); // Permet de générer un nom unique à la photo
                            $chemin = "public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload; // Chemin pour placer la photo
                            $resultat = move_uploaded_file($_FILES['file']['tmp_name'], $chemin); // On fini par mettre la photo dans le dossier

                            if ($resultat){ // Si on a le résultat alors on va comprésser l'image

                                if (is_readable("public/avatars/" . $_SESSION['id'] . "/" .$nom . "." . $extensionUpload)) {
                                    $verif_ext = getimagesize("public/avatars/" . $_SESSION['id'] . "/" .$nom . "." . $extensionUpload);

                                    // Vérification des extensions avec la liste des extensions autorisés
                                    if($verif_ext['mime'] == $ListeExtension[$extensionUpload]  || $verif_ext['mime'] == $ListeExtensionIE[$extensionUpload]){              
                                        // J'enregistre le chemin de l'image dans filename
                                        $filename = "public/avatars/" . $_SESSION['id'] . "/" .$nom . "." . $extensionUpload;

                                        // Vérification des extensions que je souhaite prendre
                                        if($extensionUpload == 'jpg' || $extensionUpload == 'jpeg' || $extensionUpload == "pjpg" || $extensionUpload == 'pjpeg'){       
                                            $image2 = imagecreatefromjpeg($filename);
                                        }

                                        // Définition de la largeur et de la hauteur maximale
                                        $width2 = 720;
                                        $height2 = 720;

                                        list($width_orig, $height_orig) = getimagesize($filename);

                                        // Redimensionnement
                                        $image_p2 = imagecreatetruecolor($width2, $height2);
                                        imagealphablending($image_p2, false);
                                        imagesavealpha($image_p2, true);

                                        // Cacul des nouvelles dimensions
                                        $point2 = 0;
                                        $ratio = null;
                                        if($width_orig <= $height_orig){
                                            $ratio = $width2 / $width_orig;
                                        }else if($width_orig > $height_orig){
                                            $ratio = $height2 / $height_orig;
                                        }

                                        $width2 = ($width_orig * $ratio) + 1;
                                        $height2 = ($height_orig * $ratio) + 1; 

                                        imagecopyresampled($image_p2, $image2, 0, 0, $point2, 0, $width2, $height2, $width_orig, $height_orig);
                                        imagedestroy($image2);

                                        if($extensionUpload == 'jpg' || $extensionUpload == 'jpeg' || $extensionUpload == "pjpg" || $extensionUpload == 'pjpeg'){

                                            // Content type
                                            header('Content-Type: image/jpeg'); // Important !!

                                            $exif = exif_read_data($filename);
                                            if(!empty($exif['Orientation'])) {
                                                switch($exif['Orientation']) { 
                                                    case 8:
                                                        $image_p2 = imagerotate($image_p2,90,0);
                                                    break;
                                                    case 3:
                                                        $image_p2 = imagerotate($image_p2,180,0);

                                                    break;
                                                    case 6:
                                                        $image_p2 = imagerotate($image_p2,-90,0);

                                                    break;
                                                }
                                            }
                                            // Affichage
                                            imagejpeg($image_p2, "public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload, 75);
                                            imagedestroy($image_p2);
                                        }

                                        $DB->insert("UPDATE utilisateur SET avatar = ? WHERE  id = ?", 
                                            array(($nom.".".$extensionUpload), $_SESSION['id']));

                                        $_SESSION['avatar'] = ($nom.".".$extensionUpload); // On met à jour l'avatar

                                        $_SESSION['flash']['success'] = "Nouvel avatar enregistré !";
                                        header('Location: profil'); // Pour la redirection
                                        exit;
                                    }else{
                                        $err = "Le type MIME de l'image n'est pas bon";
                                    }
                                } 
                            }else
                                $messer = "Erreur lors de l'importation de votre photo.";

                        }else
                            $messf = "Votre photo doit être au format jpg.";

                    }else
                        $messt = "Votre photo de profil ne doit pas dépasser 5 Mo !";
                }else
                    $messdim = "Dimension de l'image minimum 400 x 400 et maximum 6000 x 6000 !";
            }else
                $messim = "Veuillez mettre une image !";       
        }elseif(isset($_POST['dltav'])){
        if(file_exists("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']) && isset($_SESSION['avatar'])){
            unlink("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']);
            rmdir("public/avatars/". $_SESSION['id'] . "/");
            
            $DB->insert("UPDATE utilisateur SET avatar = ? where id = ?",
                array(NULL, $_SESSION['id']));
                $_SESSION['avatar'] = NULL;
        }
        $messsupp = "Votre avatar a été supprimé !";
        header('Location: profil');
        exit;
    }
    }
?>
<!DOCTYPE html>
<html>
    <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>Mon profil</title>
        <link rel="stylesheet" type="text/css" href="style3.css" />
    </head>
    <body>
        <?php
            require_once'menu.php';
        ?>
        <br/>
        <div align="center" class="container">
            <div class="row">
                <div class="col-sm-0 col-md-2 col-lg-1"</div>
                <div class="col-sm-12 col-md-8 col-lg-10">
                    <div class="cdr-ins">
                        <?php
                            if(file_exists("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']) && isset($_SESSION['avatar'])){    
                        ?>
                            <img src="<?="public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']; ?>" width="120" class="sz-image"/>
                        <?php
                            }else{
                        ?>
                            <img src="public/avatars/default/default.png" width="120" class="sz-image" />
                        <?php
                            }    
                        ?>
                        <span class="image-upload">
                            <form method="post" enctype="multipart/form-data">
                                <label for="file" style="margin-bottom: 0; margin-top: 5px; display: inline-flex">
                                    <input id="file" type="file" name="file" class="file" />
                                    <h3 class="fa fa-plus image-plus"></h3>
                                    <input type="submit" class="button" name="avatar" value="Envoyer"/><br />
                                </label>
                            </form>
                        </span>
                        <div style="border-top: 2px solid #eec; margin-top: 20px; padding-top: 20px">
                            <form method="post">
                                <label><b>Supprimer l'avatar</b></label>
                                <input type="submit" class="button" name="dltav" value="Supprimer"><br />
                                                <?php
                                                if (isset($messsupp)){
                                                ?>
                                                <div><?= $messsupp ?></div>
                                                <?php   
                                                    }
                                                ?>
                                                <?php
                                    if (isset($err)){
                                    ?>
                                    <div><?= $err ?></div>
                                    <?php   
                                    }
                                       ?>                            
                                    <?php
                                    if (isset($messer)){
                                    ?>
                                    <div><?= $messer ?></div>
                                    <?php   
                                    }
                                       ?>                    
                                    <?php
                                    if (isset($messf)){
                                    ?>
                                    <div><?= $messf ?></div>
                                    <?php   
                                    }
                                       ?>                
                                    <?php
                                    if (isset($messt)){
                                    ?>
                                    <div><?= $messt ?></div>
                                    <?php   
                                    }
                                       ?>
                                    <?php
                                    if (isset($messdim)){
                                    ?>
                                    <div><?= $messdim ?></div>
                                    <?php   
                                    }
                                       ?>
                                    <?php
                                    if (isset($messim)){
                                    ?>
                                    <div><?= $messim ?></div>
                                    <?php   
                                    }
                                       ?>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div> 
        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
        <script src="js/bootstrap.min.js"></script>
    </body>
</html> 


Et ça dans ma base de donnés :

BDD
papayou

papayou Le 1 novembre 2019 à 10:53

salut désoler du retard trop de travail merci je vais le tester et je vous tiens au courant
papayou

papayou Le 2 novembre 2019 à 15:38

bonjour
je viens de regarder et de modifier le code par contre maintenant il me dit que 
Le type MIME de l'image n'est pas bon
alors que j'ai bien importer le bon format du jpg donc je ne comprend ce qui cloche.
merci
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte