Allons dans le vif du sujet, ici je n'ai rien retouché il s'agit du formulaire HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Upload d'une image sur le serveur !</title>
</head>
<body>
<?php
if( !empty($message) )
{
echo '<p>',"
";
echo "\t\t<strong>", htmlspecialchars($message) ,"</strong>
";
echo "\t</p>

";
}
?>
<!-- Debut du formulaire -->
<form enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
<legend>Formulaire</legend>
<p>
<label for="fichier_a_uploader" title="Recherchez le fichier à uploader !">Envoyer le fichier :</label>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" />
<input name="fichier" type="file" id="fichier_a_uploader" />
<input type="submit" name="submit" value="Uploader" />
</p>
</fieldset>
</form>
<!-- Fin du formulaire -->
</body>
</html>

Passons aux choses sérieuses, en appelant la fonction QuickUpload() Le fichier posté ira se loger dans le répertoire Upload, en ayant pris soin de vérifier qu'il n'excède pas les 800x800 pour 10Mo, et il sera renommé avec un Uniqid pour ne pas écraser d'éventuelles images déjà uploadées .. Libre à vous de passer en paramètre :

  • Le chemin vers le répertoire
  • La hauteur maximum
  • La largeur maximum
  • Le nom de l'image récupérée d'une requête SQL (Mysql_insert_id) pourquoi pas
  • La taille limite
[php]
<?php

/************************************************************
* Script Original réalise par Emacs
* http://www.apprendre-php.com
* Bidouillé par jarodxxx.com ;)
*************************************************************/
/************************************************************
* Définition des constantes / tableaux et variables
*************************************************************/
function QuickUpload($target = '/upload/' , $width_max='800', $height_max='800' , $max_size = '100000', $new_name = md5( uniqid() ) ) {

// Variables
/*
$target = '/upload/'; // Répertoire cible
$max_size = 100000; // Taille max en octets du fichier
$width_max = 800; // Largeur max de l'image en pixels
$height_max = 800; // Hauteur max de l'image en pixels
$new_name = md5( uniqid() ) ; // Nom de l'image une fois uploadée
*/


// Tableaux de données
$tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisées
$infosImg = array();

// Variables
$extension = '';
$message = '';
$nomImage = '';

/************************************************************
* Création du répertoire 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 disposiez des droits suffisants pour le faire ou créez-le manuellement !');
}
}

/************************************************************
* Script d'upload
*************************************************************/
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 récupère les dimensions du fichier
$infosImg = getimagesize($_FILES['fichier']['tmp_name']);

// On vérifie 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)){
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier']['error']) && UPLOAD_ERR_OK === $_FILES['fichier']['error']){
// On renomme le fichier
$nomImage = $new_name .'.'. $extension;

// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier']['tmp_name'], $target.$nomImage)) {
$message = 'Upload réussi !';
}else{
// Sinon on affiche une erreur système
$message = 'Problème lors de l\'upload !';
}

}else{
$message = 'Une erreur interne a empêché l\'upload de l\'image';
}

}else{
// Sinon erreur sur les dimensions et taille de l'image
$message = 'Erreur dans les dimensions de l\'image !';
}

}else{
// Sinon erreur sur le type de l'image
$message = 'Le fichier à uploader n\'est pas une image !';
}

}else{
// Sinon on affiche une erreur pour l'extension
$message = 'L\'extension du fichier est incorrecte !';
}

}else{
// Sinon on affiche une erreur pour le champ vide
$message = 'Veuillez remplir le formulaire svp !';
}
}

} // fin de fonction

?>