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 :
j'ai essayé plusieurs fois de le faire mais je n'y arrive pas...
merci bp d'avance
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"> 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