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 = new mysqli(HOST,USER,MDP,_DB);
// si la connexion se fait en UTF-8, sinon ne rien indiquer
$conn_DB->set_charset("utf8");
if ($conn_DB->connect_error) {
    die('Erreur de connexion ('.$conn_DB->connect_errno.')'. $conn_DB->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>