PHP

Erreur au niveau de la modification de l'avatar

Non Résolu

Salut tout le monde


J'ai pris le cours sur le developpement du site de a a z et j'ai des erreurs au niveau de la modification de l'avatar par defaut et on m'indique des erreurs a la ligne 70, 99, 101 et 106 sauf que je n'en ai pas trouvé,


Merci d'avance pour votre aide.


<?php
      session_start () ;


      include('bd/connexionDB.php') ;


            if(!empty($_POST)){
            extract($_POST);
            $valid = true;


            if(isset($_POST['avatar'])){


                if(isset($_FILES['file']) and !empty($_FILES['file']['name'])){


                    $filename = $_FILES ['file'] ['tmp_name'];


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


                    if ($width_orig >= 500 && $height_orig >= 500 && $width_orig <= 6000 && $height_orig <= 6000){


                          $ListeExtension = array('jpg' => 'image/jpg', '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
                          //11 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 1'extension après le point, soit "jpg, jpeg ou


                                if (in_array( $extensionUpload, $extensionsValides) ){ // vérifie que 1'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'exis te 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) ; // 0On fini par mettre la photo dans le dossier


                                      if ($resultat) { // Si on a le résultat alors on va comprésser 1'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 exten si ons autorisés
                                      if($verif_ext['mime'] = $ListeExtension[$extensionUpload] || $verif_ext ['mime'] == $ListeExtensionIE [$extensionUpload] ){


                                      // J'enregistre le chemin de 1'image dans fi lename
                                      $filename ="public/avatars/".$_SESSION['id']."/".$nom.".". $extensionUpload ;


                                      //Vérifica tion _des extensions queyje 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 = 500;
                                      $height2 = 500;


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


                                      $exif = exif_read_data ($filename) ;
                                      if(!empty ($exif['Orientation'] )){


                                            switch ($exif['Orientation']) {
                                              case 8:


                                                    $image_p2 = imagerotate($image_p2,90,0);
                                                // code...
                                                break;


                                              case 3:


                                                    $image_p2 = imagerotate($image_p2,100,0);
                                                // code...
                                                break;


                                              case 6:


                                                    $image_p2 = imagerotate($image_p2,-90,0);
                                                // code...
                                                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 a jour l'avatars


                                //$_SESSION['flash']['success'] = "Nouvel avatar enregistré"
                              //  header('Location: profil.php');
                              //  exit;


                                ////////////////Fin de compression de l'images


                          }else {


                                $_SESSION['flash']['warning'] = "Le type de MIME de l'image n'est pas bon.";
                            // code...
                          }


                    }


              }else {


                    $_SESSION['flash']['error'] = "Erreur lors de l'importation de votre photo.";


              }


      }else {


            $_SESSION['flash']['warning'] = "Votre photo doit etre au format jpg.";


      }


}else {


      $_SESSION['flash']['warning'] = "Votre photo de profil ne doit pas depasser 5 Mo !";


}


}else {


      $_SESSION['flash']['warning'] = "Dimensions de l'image minimum 400 x 400 et maximum 6000 x 6000 !";


}


}else {


      $_SESSION['flash']['warning'] = "Veuillez mettre une image !";


} }else if(isset($_POST['dltav'])) {




      // Permet de supprimer une image dans un $dossier
      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; //On met a jour l'avatar
        // code...
      }


      $_SESSION['flash']['success'] = "Votre avatar à été supprimé !";
      header('Location: profil');
      exit;
}


}
}


?>




<!DOCTYPE html>
<html lang="fr">
    <head>
        <!-- <base href="/"/> -->
        <meta charset="utf-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
        <title>Topic</title>
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <?php


            if (isset($_SESSION['id']) && $_SESSION['theme'] == 1) {


                echo '<link rel="stylesheet" href="style-sombre1.css">';
              // code...
            } else {


                echo '<link rel="stylesheet" href="style.css">';
              // code...
            }


        ?>
    </head>


    <body>


      <?php include('nav.php') ?> <br>


        <!-- Ici on peut afficher toutes les informations que vous souhaitez :
            - �ge,
            - sexe,
            - date d'anniversaire,
            - mail,
            - etc.
        -->


        <?php $afficher_profil = $DB->query("SELECT * FROM utilisateur WHERE id = ?",
            array($_SESSION['id']));


        $afficher_profil = $afficher_profil->fetch(); ?>




        <div class="container">


              <div class="row">


                    <div class="col-sm-12 col-md-12 col-lg-12">


                          <div class="alert alert-secondary cdr-ins">


                                <h4 style="color:#fff;">Voici le profil de <?= $afficher_profil['prenom'] . " " .  $afficher_profil['nom']; ?></h4>


                                <div style="margin:20px 0;">


                                      <?php
                                            if (file_exists("public/avatars/".$_SESSION['id']. "/" .$_SESSION['avatar']) && isset($_SESSION['avatar'])) {
                                      ?>


                                            <img src="<?= "public/avatars/".$_SESSION['id']. "/" .$_SESSION['avatar']; ?>" width="120" class="rounded-circle">


                                      <?php
                                            } else{
                                      ?>


                                      <img src="public/avatars/defaults/images.png" width="120" class="rounded-circle">


                                      <?php
                                            }
                                       ?>


                                </div>


                                <span class="image-upload">


                                      <form enctype="multipart/form-data" method="post">


                                            <label for="file" style="margin-bottom:0; margin-top:5px; display:inline-flex;">


                                                  <input type="file" class="form-control hide-upload" id="file" name="file" required/>
                                                  &nbsp
                                                  <input class="btn btn-info" type="submit" name="avatar" value="Envoyer">


                                            </label>


                                      </form>


                                </span>


                                <div style="border-top: 2px solid #eee; margin-top:20px; padding-top:20px;">


                                      <form method="post">


                                            <label> <b>Supprimer l'avatar</b> </label>


                                            <input type="submit" class="fa trash-avatar" name="dltav" value="Supprimer">


                                      </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="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
    <body>
</html>


1094 vues
12 juillet 2020 à 23:30 (Édité)
Cette pub permet au site de vivre ...

13 commentaires

Re:


On a plus reçu de nouvelles concernant ton problème... L'as-tu résolu ? 🤔

Si c'est le cas, il faut cliquer sur le bouton vert "Résolu" 😉

Hello @Gael-Mk,


Tu utilises Wamp... Il est recommandé de ne plus l'utiliser... Voilà la raison...

@Gael-Mk,


Il faut que tu fasses la même chose pour le reste de ton code .. car pour le moment les espaces peuvent te poser des problèmes.


Donc d'abord revérifie bien tout ton code. Ensuite utilise un echo 1;exit; pour déboguer et savoir ou ça bloque

@Clouder, @Sebastien


Ma session est bien annoncé


<?php
      session_start() ;


      include('bd/connexionDB.php') ; ...


Et j'ai aussi supprimé les espaces


$filename = $_FILES['file']['tmp_name'];


On ne m'indique aucune erreur comme tel mais cependant comme je l'ai precedemment dit, apres validation on me redirige vers une page toute noir et l'image n'est pas enregistré comme avatar et il est quand meme stocké dans la base de donnée

Dans ton code session_start n'est pas écrit comme ça j'espère :


session_start () ;


Il n'y à pas d'espace non plus entre le $_FILES et [ et entre ['file'] ['tmp_name'] ?


$filename = $_FILES ['file'] ['tmp_name'];

@Clouder,


Je l'ai fait et cette fois on me sort l'erreur


( ! ) Parse error: syntax error, unexpected 'header' (T_STRING) in C:\wamp\www\congo_net\avatar.php on line 144


J'ai commenté les lignes de redirection et après validation de modification je suis redirigé vers une page toute noir, et quand je rentre en arrière la photo de profil est bien mise a jour juste dans la case de modification et lorsque je retourne au profil il n'ya rien et meme en retournant dans la section de modification, elle a disparu 😑

Merci d'avance

@Gael-Mk,


Tu peux ajouter ça dans ton code PHP :


ini_set ('gd.jpeg_ignore_warning', 1);


Il faut que tu l'ajoutes juste avant une fonction GD (imagecreatefromjpeg())

Hey @Clouder, ca ce sont les erreurs que je recois lors du chargement de l'avatar et c'est uniquement sur la page de l'avatar que je constate le changement de l'avatar sauf qu'on y met pas l'image selectionné mais va devient tout noir, Merci d'avance



( ! ) Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Invalid SOS parameters for sequential JPEG in C:\wamp\www\congo_net\avatar.php on line 70Call Stack#TimeMemoryFunctionLocation10.0014170560{main}( )..\avatar.php:020.0182190640imagecreatefromjpeg ( )..\avatar.php:70


( ! ) Warning: imagecreatefromjpeg(): 'public/avatars/11/ae867acbc5496f768fb49fb5b6615d87.jpg' is not a valid JPEG file in C:\wamp\www\congo_net\avatar.php on line 70Call Stack#TimeMemoryFunctionLocation10.0014170560{main}( )..\avatar.php:020.0182190640imagecreatefromjpeg ( )..\avatar.php:70


( ! ) Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\wamp\www\congo_net\avatar.php on line 99Call Stack#TimeMemoryFunctionLocation10.0014170560{main}( )..\avatar.php:020.13791463016imagecopyresampled ( )..\avatar.php:99


( ! ) Warning: imagedestroy() expects parameter 1 to be resource, boolean given in C:\wamp\www\congo_net\avatar.php on line 101Call Stack#TimeMemoryFunctionLocation10.0014170560{main}( )..\avatar.php:020.13921462968imagedestroy ( )..\avatar.php:101


( ! ) Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\congo_net\avatar.php:99) in C:\wamp\www\congo_net\avatar.php on line 106Call Stack#TimeMemoryFunctionLocation10.0014170560{main}( )..\avatar.php:020.14081463040header ( )..\avatar.php:106

@Gael-Mk, Tu pourrais nous afficher les messages d'erreurs que tu obtiens ?

Oui oui je l'ai regardé, et c'est pourquoi je pose le problème, parceque le code est pareil mais y'a erreur aux lignes que j'ai pris le soin d'indiquer dans mon topic😑

Cette pub permet au site de vivre ...
1
2