Upload image complet PHP

Scipt complet

    <?php
    define('USER',	'xxxxxxxx'); // Nom Utilisateur
    define('MDP',	'Xyxyxy'); // Mot de passe
    define('_DB',	'ma_base'); // Nom de votre Base 1
    define('HOST',	'localhost');
    $conc_adress = "https://www.xxxxxxxxxxxx.com/"; // l'URL de votre site EX: https://www.monSite.com 
    /** identifiants BDD pour le site */
    // Create connection
    $conn_DB = mysqli_connect(HOST,USER,MDP,_DB);
    // si la connexion se fait en UTF-8, sinon ne rien indiquer
    $conn_DB->set_charset("utf8");
    if (!$conn_DB) {
            die("Erreur de connexion: " . mysqli_connect_error());
        }     
    ?>
    <?php
    $compteid = 1;
    	$query_compte = mysqli_query($conn_DB, "SELECT * FROM membres WHERE id_membre = '".$compteid."'");
    	$existe_compte = mysqli_fetch_object($query_compte);  
    $img_waterm = "watermark.png";     
    ?>
    <?php
    // Constantes
    $dr_img = "../images_membres/";
    $dr_membre = $existe_compte->id_membre;
    $target_dir = "images_membres/".$compteid."/";
    
    define('TARGET', $target_dir);
    
    define('MAX_SIZE', 100000);    // Taille max en octets du fichier
    define('WIDTH_MAX', 800);    // Largeur max de l'image en pixels
    define('HEIGHT_MAX', 800);    // Hauteur max de l'image en pixels
    
    define('WIDTH_MAX_COUPE', 300);    // Largeur max pour recoupe en pixels
    define('HEIGHT_MAX_COUPE', 300);    // Hauteur max pour recoupe en pixels
     
    // Tableaux de donnees
    $tabExt = array('jpg','gif','png','jpeg','JPEG');    // Extensions autorisees
    $infosImg = array();
     
    // Variables
    $extension = '';
    $message = '';
    $nomImage = '';
    
    if (isset($_POST['submit_modif'])){
    if(file_get_contents(''.$conc_adress.'/TEST_UPLOAD_COMPLET/images_membres/'.$dr_membre.'/'.$existe_compte->avatar.'')) {
    $target_delete = "images_membres/".$compteid."/".$existe_compte->avatar.""; 
    $dossier_img = $target_delete;
          unlink( $dossier_img ) ;
    }
    } 
    /************************************************************
     * Creation du repertoire cible si inexistant
     *************************************************************/
    if( !is_dir(TARGET) ) {
      if( !mkdir(TARGET, 0755) ) {
        exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !');
      }
    } 
    /************************************************************
     * Script d'upload
     *************************************************************/
    if (isset($_POST['submit_modif'])){
    if(!empty($_POST)){
      // On verifie si le champ est rempli
      if( !empty($_FILES['fichier']['name']) )
      {
      // Recuperation de l'extension du fichier
      $extension  = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);
    
      // On verifie l'extension du fichier
      if(in_array(strtolower($extension),$tabExt))
      {
      // On recupere les dimensions du fichier
      $infosImg = getimagesize($_FILES['fichier']['tmp_name']);
     
      // On verifie le type de l'image
      if($infosImg[2] >= 1 && $infosImg[2] <= 14)
      {
      // On verifie les dimensions et taille de l'image
    if(($infosImg[0] >WIDTH_MAX) && ($infosImg[1] > HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) > MAX_SIZE))
    {
    $message = 'Erreur dans les dimensions et / ou poids de l\'image !<br />Taille Maxi: 100 000 octets<br />
    Larg et Haut Maxi: 800px';
    }
    else {
    if(($infosImg[0] > WIDTH_MAX_COUPE) && ($infosImg[1] > HEIGHT_MAX8COUPE) && (filesize($_FILES['fichier']['tmp_name'])
    <= MAX_SIZE))
    {
    //on redimentionne limage
    $x = 200;
    
    $y = 200; # Taille en pixel de l'image redimensionnée
    
    if ($infosImg)
     
    if ($infosImg['mime']=='image/jpeg' ) {
    $img_big = imagecreatefromjpeg($_FILES['fichier']['tmp_name']); # On ouvre l'image d'origine
    $img_new = imagecreate($x, $y);
    # création de la miniature
    $img_mini = imagecreatetruecolor($x, $y)
    or $img_mini = imagecreate($x, $y);
    
    // copie de l'image, avec le redimensionnement.
    imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$infosImg[0],$infosImg[1]);
    
    imagejpeg($img_mini,$_FILES['fichier']['tmp_name'] );
    }        
    elseif ($infosImg['mime']=='image/png' ) {
    $img_big = imagecreatefrompng($_FILES['fichier']['tmp_name']); # On ouvre l'image d'origine
    $img_new = imagecreate($x, $y);
    # création de la miniature
    $img_mini = imagecreatetruecolor($x, $y)
    or $img_mini = imagecreate($x, $y);
    
    // copie de l'image, avec le redimensionnement.
    imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$infosImg[0],$infosImg[1]);
    
    imagepng($img_mini,$_FILES['fichier']['tmp_name'] );
    }
    elseif ($infosImg['mime']=='image/gif' ) {
    $img_big = imagecreatefromgif($_FILES['fichier']['tmp_name']); # On ouvre l'image d'origine
    $img_new = imagecreate($x, $y);
    # création de la miniature
    $img_mini = imagecreatetruecolor($x, $y)
    or $img_mini = imagecreate($x, $y);
    
    // copie de l'image, avec le redimensionnement.
    imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$infosImg[0],$infosImg[1]);
    
    imagegif($img_mini,$_FILES['fichier']['tmp_name'] );
    }
    $message_rd = '<br />+ Image redimensionnée ...';         
    }        
    {
    // Parcours du tableau d'erreurs
    if(isset($_FILES['fichier']['error']) 
    && UPLOAD_ERR_OK === $_FILES['fichier']['error'])
    {
    $extension = str_replace('JPEG','jpg',$extension);
    $extension = str_replace('jpeg','jpg',$extension);
    $Newextension = str_replace('jpg','png',$extension);          
    // On renomme le fichier
    $nomImage = md5(uniqid()) .'.'. $Newextension;
    $watermarkImagePath = "".$img_waterm."";
                
    // Si c'est OK, on teste l'upload
    if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage))
    {
                
    // Charge le tampon et la photo auxquels appliquer le filigrane 
    $watermarkImg = imagecreatefrompng($watermarkImagePath); 
    switch($fileType){ 
     case 'jpg': 
     $im = imagecreatefromjpeg(TARGET.$nomImage); 
     break; 
     case 'jpeg': 
     $im = imagecreatefromjpeg(TARGET.$nomImage); 
     break; 
     case 'png': 
     $im = imagecreatefrompng(TARGET.$nomImage); 
     break; 
     default: 
     $im = imagecreatefromjpeg(TARGET.$nomImage); 
     }
    
    // Définir les marges du filigrane 
    $marge_right = 10; 
    $marge_bottom = 10; 
                     
    // Obtenir la hauteur / largeur de l'image du filigrane 
    $sx = imagesx($watermarkImg); 
    $sy = imagesy($watermarkImg);
                     
    // Copiez l'image du filigrane sur notre photo en utilisant les décalages de marge et 
    // la largeur de la photo pour calculer le positionnement du filigrane.
                    
    imagecopy($im, $watermarkImg, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0,
    imagesx($watermarkImg), imagesy($watermarkImg));
                     
    // Enregistrer l'image et libérer de la mémoire 
    imagepng($im, TARGET.$nomImage);
                        
    $im = imagecreatefrompng(TARGET.$nomImage);
    //Enfin on la remet ou elle était avec la qualité qu'on veut ! (ici 50)
                        
    $imgName = $nomImage;
    $webPName = str_replace('png','webp',$nomImage);
    
    exec("convert -colorspace RGB ".$imgName." ".$webPName . " ");
                                                                                  
    //imagejpeg($im, TARGET.$nomImage, 50);
                        
    imagewebp($im, TARGET.$webPName);
                                            
    $nomdestroy = str_replace('webp','png',$webPName);
    $pngdelete = "images_membres/".$dr_membre."/".$nomdestroy."";
    
    if( file_exists ( $pngdelete))
    unlink( $pngdelete ) ;                    
                                            
    imagedestroy($im);
                                             
    $modif_image = 'UPDATE membres SET `avatar` = "'.$webPName.'" WHERE id_membre = "'.$compteid.'"';
    $res_modif_image = $conn_DB->query($modif_image);            
    $message = 'Upload réussi !';
    $dr_message = '<br /><span style="color:#00CC00;">le fichier a été stocké à cette adresse:
    /TEST_UPLOAD_COMPLET/images_membres/'.$compteid.'/'.$existe_compte->avatar.'.</span>';
    }
    else
    {
    $message = 'Problème lors de l\'upload !';
    }
    }
    else
    {
    $message = 'Une erreur interne a empêché l\'uplaod de l\'image';
    }
    }
    }        
    }
    else
    {
    $message = 'Le fichier est trop volumineux ou n\'est pas une image !<br />
    Taille Maxi: 100 000 octets<br />Larg et Haut Maxi: 800px';
    }
    }
    else
    {
    $message = 'La photo doit être une image !<br />
    Au format: (.jpg .jpeg .JPEG .gif .png) ';
    }
    }
    else
    {
    $message = 'Vous n\'avez pas choisi d\'image !';
    }
    }
    }
    ?>
    
    <h1>Upload complet d'une image sur serveur web</h1>
    <div class="">        
    <?php echo $message; ?> <?php echo $message_rd; ?> <?php echo  $dr_message; ?>
    </div>
          
    <div class="">
    <h2>Formulaire Upload :</h2><br>
    <form enctype="multipart/form-data" action="<?PHP   $PHP_SELF   ?>" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" />
    <input class="parcour-input" type="file" required id="fichier_a_uploader" name="fichier"/>
    <input type="submit" name= "submit_modif" id="submit_modif" value="Go" />
    </form>      
    </div>
          
    <div class="">
    <h3>Votre Téléchargement :</h3>
    <br>
    <?php
    $query_image = mysqli_query($conn_DB, "SELECT * FROM membres WHERE id_membre = '".$compteid."'");
    $existe_image = mysqli_fetch_object($query_image);
    if(file_get_contents(''.$conc_adress.'/TEST_UPLOAD_COMPLET/images_membres/'.$dr_membre.'/'.$existe_image->avatar.'')) {
    $image_membre = ''.$conc_adress.'/TEST_UPLOAD_COMPLET/images_membres/'.$dr_membre.'/'.$existe_image->avatar.'';
    $recharge_message = '<span style="color:#00CC00;">En selectionnant une autre image, l\'image actuelle
    sera remplacée dans son dossier, ainsi qu\'en base de donnée.</span><br />Vous pouvez tester ...';
    ?>
    <img style="vertical-align:middle;" src="<?php echo $image_membre ?>" alt="votre photo" />
    <?php
     }  
    ?>      
    </div>
    <hr>
    <div class="">
    <?php echo $recharge_message ?>
    </div>