Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: didoub74, papayou
Auteur Sujet: Problème avatar

papayou

Messages: 6

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';?>
Publicité

didoub74

Messages: 11

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

Messages: 6

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

Messages: 11

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

papayou

Messages: 6

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

didoub74

Messages: 11

Salut essaye de regarder ce tuto c'est presque pareil

papayou

Messages: 6

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

Messages: 11

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

Messages: 6

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

papayou

Messages: 6

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 vous connecter ou créer un compte pour poster une réponse