question sur un script

alpking

Membre actif
13 Mai 2005
142
4
46
Bonjour,

j'ai le script suivant et j'aimerai y modifier 3 choses :

1. j'aimerai autoriser les format : png, gif
2. j'aimerai supprimer l'histoire des session avec le pseudo, qui fait un dossier avec le pseudo pour y mettre l'image (j'aimerai que tout soit dans upload)
3. j'ai un probleme avec le chmod, je n'arrive pas a supprimer les photos envoyées

voici le script :

Bloc de code:
<?
//Cookies du pseudo
//*****************
 
$pseudo = $_POST['pseudo'];
 
//Enregistre le pseudo actuel
if(($pseudo != "")&&($pseudo != "Anonyme"))setcookie ("cookie_rep", $pseudo, time()+3600*24*365); //valable 1 année
 
//Lecture du pseudo
$cook_rep= $HTTP_COOKIE_VARS["cookie_rep"];
if(!isset($cook_rep))$cook_rep = "Anonyme";
if($pseudo == "")$pseudo = $cook_rep;
?>
 
<?php
//---------------------------------------------------------------------------------
// Script réalisé par Bouillou sur la base du script d'upload simple de Webdeb73
// Ajout de Bouillou: Vérification de l'existance du fichier, notification par mail,
// modification des droits d'accès des images (CHMOD 640 --> 644)
// suppression des accents, redimentionnement automatique des
// dimensions et de la taille de l'image, cookies du pseudo,
// images classées sur le serveur par pseudo,...
// Modifié le 20/05/2006
// Version 1.2
// http://www.jeunessebottens.com
//----------------------------------------------------------------------------------
 
//----------------------------
// DEFINITION DES VARIABLES
//----------------------------
 
//Pour les tester en local (avec EasyPHP,...)
$test_local = 1; //0 pour le web                                                    //N'effectue pas la réalocation de la mémoire du serveur
                                                                                                                    //et n'envoi pas de mail de confirmation
 
$extension = 'image/pjpeg'; // MIME JPEG pour la comparaisond de l'extention du fichier
$extension2 = 'image/jpeg'; // MIME JPEG pour la comparaisond de l'extention du fichier
$quality = 100; // Qualité de la compression JPEG
$kb_max = 70000; // Valeur max en octets de l'image finale
$max_size = 5000000; // Taille max en octets du fichier à uploader pour traitement
$largeurDestination = 466; // Largeur max de l'image finale en pixel
$nom_rep = "upload"; // Lien du répertoire des dossier photos à la raçine du script (fin sans /)
$site = "http://".$_SERVER["HTTP_HOST"]."/test/html/"; // Adresse du dossier où est installé le script (fin avec /)

 
//---------------------------------------------
// DEFINITION DES VARIABLES LIEES AUX FICHIERS
//---------------------------------------------
 
$nom_file = $_FILES['fichier']['name'];
$taille = $_FILES['fichier']['size'];
$tmp = $_FILES['fichier']['tmp_name'];
$ext_img            =    $_FILES['fichier']['type'];
$lien_dossier = $nom_rep;
$nom_rep .= "/".strtolower($pseudo);
$verif_exist = $nom_rep;
$verif_exist .= "/";
$verif_exist .= $nom_file;
       
//----------------------
// SCRIPT D'UPLOAD
//----------------------
 
//Vérifie l'existance du dossier de réception
//*******************************************
if(!file_exists($lien_dossier))
  {
   //Crée le répertoire de classement des photos s'il n'existe pas
   if(!mkdir($lien_dossier,0755))
     {
         echo "Impossible de créer le répertoire : ",$lien_dossier," --> upload interrompu!!!";
         exit;
     }
  }
                
//Enlever les accents
//*******************
function enlever_accents($dest_fichier){
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ/',
                                     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy/');
//remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z\/0-9]+)/i', '_', $dest_fichier);
return $dest_fichier;
}
 
$nom_rep = enlever_accents($nom_rep);
$pseudo = enlever_accents($pseudo);
$verif_exist = enlever_accents($verif_exist);
$nom_file = enlever_accents($nom_file);
 
//Début de la procédure d'upload
//******************************
if(!empty($_POST['posted'])) {
	// On vérifie si le champ est rempli
	if(!empty($nom_file) && (!empty($pseudo))) {
	  //On vérifie que le nom du fichier n'existe pas
	  if(!file_exists($verif_exist)) {
	    // On vérifie l'extension du fichier
	    if(($ext_img == $extension)||($ext_img == $extension2)) {
           // On récupère les dimensions du fichier
           $infos_img = getimagesize($tmp);
            // On vérifie la taille de l'image
            if($taille <= $max_size) {
            //Crée le répertoire avec le pseudo
            if(!file_exists($nom_rep)){
                 mkdir($nom_rep,0755);
                 }
               //upload du fichier
               if(move_uploaded_file($tmp,$nom_rep."/".$nom_file)) {
                    // Si upload OK alors on affiche le message de réussite
                    chmod($verif_exist, 0640);
                    echo "<b><font color=red>Merci $pseudo!</font></b><br><br>";
                    echo '<b><font color=red>Image uploadée avec succès !</font></b><br>';
                    echo '<hr />';
                    echo '<u>Détails de l\'image</u><br>';
					echo '<b>Fichier :</b> ', $nom_file , '<br />';
					echo '<b>Taille :</b> ' , $taille, ' Octets<br />';
					echo '<b>Largeur :</b> ', $infos_img[0], ' px<br />';
					echo '<b>Hauteur :</b> ', $infos_img[1], ' px<br />';
					echo '<hr />';
					 
					//calcul et redimension
					//*********************
					$fichierSource = $nom_rep;
					$fichierSource .= "/";
					$fichierSource .= $nom_file;
					$fichierSource = $fichierSource;
					//hauteur / largeur
					$rapport = $infos_img[1] / $infos_img[0];
					//Dimension de sortie
					$hauteurDestination = $largeurDestination * $rapport;
					 
					if($test_local == 0)
						{
						//Réaloue la mémoire dont le serveur à besoin
						//*******************************************
						$memoryNeeded = round(($infos_img[0] * $infos_img[1] * $infos_img['bits'] * $infos_img['channels'] / 8 + Pow(2, 16)) * 1.65);
						$mem_in_use= memory_get_usage();
						//echo "Mémoire utilisée : $memoryNeeded contre $mem_in_use<br><br>";
						$test = (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) + 1;
						//solution calculée
						if(function_exists('memory_get_usage') && memory_get_usage() + $memoryNeeded > (integer) ini_get('memory_limit') * pow(1024, 2))
						ini_set('memory_limit', (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) + 2 . 'M');
						}
						 
					//Création de l'image
											//*******************
                    $source = imagecreatefromjpeg($fichierSource);
                     
                    $largeurSource = imagesx($source);
                    $hauteurSource = imagesy($source);
                                       
                    if($largeurSource > $largeurDestination){
                       $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)
                            or die ("Erreur lors de la création de l'image");
                    }
                    else{
                       $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])
                            or die ("Erreur lors de la création de l'image");
                       $largeurDestination = $infos_img[0];
                       $hauteurDestination = $infos_img[1];
                    }
                       
                    //Redimentionnement
                    //*****************
                    ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
                    
                    //Création du fichier de sortie
                    //*****************************
                    $fh=fopen($fichierSource,'w');
                    fclose($fh);
                    ImageJpeg ($im,$fichierSource,$quality);
                    $size_file = filesize($fichierSource);
                    
                    //Test de la taille en kb de l'image définitive
                    //*********************************************
                    $size_file = filesize($fichierSource);
                    $iteration = 0;
                    while($size_file > $kb_max){
                         if($quality > 0)$quality -= 5;
                         else {$quality = "Erreur!!!"; break;}
                       unlink($fichierSource);
                       $fh=fopen($fichierSource,'w');
					   fclose($fh);
					   ImageJpeg ($im,$fichierSource,$quality);
					   $size_file = filesize($fichierSource);
					   $iteration++;
					}
 
					//Affiche le détail de l'image
					echo '<u>Détails de l\'image finale sur le serveur</u><br>';
					echo '<b>Fichier :</b> ' , $nom_file, '<br />';
					echo '<b>Taille :</b> ' , $size_file, ' Octets<br />';
					echo '<b>Qualité :</b> ' , $quality, ' %<br />';
					echo '<b>Largeur :</b> ' , $largeurDestination, ' px<br />';
					echo '<b>Hauteur :</b> ' , $hauteurDestination, ' px<br />';
					echo '<b>Adresse du fichier à copier dans la news : </b>' , htmlspecialchars('<img src="http://www.gaptrading.ch/html/imagenews/' . $_FILES['fichier']['name'] . '">');
					echo '<hr />';
					 
					$lien_image = $site.$nom_rep."/".$nom_file;
					echo "L'image ci-dessous a été redimentionnée et chargée sur le serveur.<br><br>";
                    //echo "Lien de l'image : ".$lien_image."<br /><br />";
                    echo "<img border='0' src='".$lien_image."'><br />";
                    
                    if($test_local == 0)
                      {
                     
                      }
                       
                } else {
                    // Sinon on affiche une erreur système
                    echo '<font color=red><b><u>ECHEC DE L\'ENVOI</u><br><br>Problème lors de l\'upload !</b><br /><br /><b>Erreur num : '.$_FILES['fichier']['error']. '</b><br /><br /></font>';
                }
            } else {
                // Sinon on affiche une erreur pour les dimensions et taille de l'image
                echo "<b>La taille du fichier dépasse la taille maximale authorisée de $max_size octets!</b><br /><br />";
            }
        } else {
            // Sinon on affiche une erreur pour l'extension
            echo '<font color=red><b><u>ECHEC DE L\'ENVOI</u><br><br>Votre image ne comporte pas l\'extension .jpg !</b><br /><br /></font>';
        }
      } else {
             //Sinon on demande de renommer
             echo '<font color=red><b><u>ECHEC DE L\'ENVOI</u><br><br>Une image avec le même nom existe déjà! Renommer la photo et réessayer, Merci.</b><br /><br /></font>';
}     
} else {
// Sinon on affiche une erreur pour le champ vide
echo '<font color=red><b><u>ECHEC DE L\'ENVOI</u><br><br>Aucune photo sélectionnée ou aucun pseudo entré!</b><br /><br /></font>';
    }
}
?>
      
 <form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
 <b>Envoyer le <a href="hhfhj.hm">fichier</a> :</b><br />
 <br />
 <input type="hidden" name="posted" value="1" />
 <font color="#FFFFFF">Votre pseudo : </font><input name="pseudo" type="text" value="<?php echo $pseudo ?>" size="20" ><br><br>
 
 <font color="#FFFFFF">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sélectionner la photo : </font><input name="fichier" type="file"><br><br>
 <input type="submit" value="Envoyer la photo" />
 </form>

j'ai essayé plusieurs fois de le faire mais je n'y arrive pas...

merci bp d'avance