Upload de fichier

Description

Code d'upload de fichier, Génére un code de 5 caractères alphanumériques et l'intègre avant le nom du fichier pour éviter les doublons, Créé un bouton de retour, enfin ça reste un script d'upload d'images (ou autre).
Pour ajouter un type de fichier, ajouter son extension dans la tableau $AUTH_EXT et supprimer le test 'if' sur la variable '$ext' sinon ça plantera :)

Donnez moi vos avis svp sur comment améliorer le code d'upload en lui même les fioritures autour je trouverai ;)

Source / Exemple :


<?php

//  -------------------------------------- Script d'upload de fichers --------------------------------------
//
//                               une partie du code source présent dans le zip.
//
//        Fichiers présentement supportés : jpg, jpeg, png, bmp, gif.
//            Pour tout ajout de type de fichier supportés : modifiez le tableau $AUTH_EXT
//            Pensez à commencer le second 'if' ci-dessous pour ne pas que ça bug
//
//        Codé par : Shaihuld
//             msn : Shaihuld.gmail.com
//
//        Code CSS sournoisement volé à :
//           ceacy : http://www.codes-sources.com/auteurdetail.aspx?id=48873
//
// -------------------------------------- Bon Courrage !! Shaihuld . --------------------------------------

//Définition des variables :

ini_set( 'register_globals' , 0 );                                          // permet de récupérer les variables $size, $width, $height

$MAX_SIZE           =   2097152;                                            // Taille maximum du fichier (ici : 2MO)
$DESTINATION_FOLDER =   "./images/";                                        // Fichier Destination - doit exister !!!
$AUTH_EXT           =   array(".jpg", ".png", ".jpeg", ".bmp", ".gif");     // types de fichiers supportés
$RETURN_LINK        =   $_SERVER['HTTP_REFERER'];                           // Récupère la variable $_SERVER['HTTP_REFERER'] pour createReturnLink()
$chaine             =   code_aleatoire();                                   // Définit un code aléatoire pour l'image
$poidsFichier       =   0;                                                  // On définit $poids fichier à 0 pour que le script ne plante pas si aucun fichier n'est choisi.

if(!empty($_FILES["file"]["name"])){

// si la variable $_FILES["file"]["name"] n'est pas vide
// cela veut dire que le server reçoit l'info qu'un fichier est
// envoyé, on définit donc les variables relative au fichier
	
	$nomTemporaire  =   $_FILES["file"]["tmp_name"] ;
	$nomFichier     =   $_FILES["file"]["name"] ;                           // nom du fichier uploadé
	$typeFichier    =   $_FILES["file"]["type"] ;
	$poidsFichier   =   $_FILES["file"]["size"] ;                           // poids en Octets
	$poidsFichierK  =   $poidsFichier/1024;                                 // Convertion du poids fichi0er d'Octets en KOctets
    $poidsFichierK  =   sprintf("%.0f", $poidsFichierK);
	$codeErreur     =   $_FILES["file"]["error"] ;
	$extension      =   strrchr($nomFichier, ".");                          // on récupère l'extentions
    $size           =   GetImageSize($_FILES["file"]["tmp_name"]);
    $width          =   $size[0];
    $height         =   $size[1];
    $ext            =   $size[2];                                           // donne le type de fichier reçu sous forme numérique (utilisé dans le prochain if)
    $nomReelFichier =   $chaine."_".$nomFichier;                            // nom du fichier sur le server

}

// cette partie de code vérifie si l'extention du fichier est bien correcte vis à vis de sa signature
// si vous uploadez des fichiers autres que des gif, jpg, jpeg, bmp, png pensez à commenter ou supprimez ce if
// sinon ça ne marchera pas !

if ($ext xor 1 || $ext xor 2 || $ext xor 3){
    echo $ext;
    echo "skoi se fraudeur ? snif <br />";
    createReturnLink();
    exit();
}

//--

// Définition des fonctions

    // Création du raccouri de retour
function createReturnLink(){
	global $RETURN_LINK;
	echo "<a href='".$RETURN_LINK."'>Retour</a><br>";
}

    // regarde si l'extension du fichier est dans le tableau AUTH_EXT

function isExtAuthorized($ext){
	global $AUTH_EXT;
	if(in_array($ext, $AUTH_EXT)){
		return true;
	}else{
		return false;
	}
}

    // Génère un code aléatoire de 5 caractères pour charques images

function code_aleatoire() 
{ 
	$alphabet    = 'abcdefghijklmnopqrstuvwxyz'; 
	$alphabet   .= '1234567890'; 
	$chaine      = ''; 

	for($i=0;$i < 5;$i++) 
	{ 
        $chaine .= substr($alphabet,rand()%(strlen($alphabet)),1); 
	} 
	return $chaine; 
}

if($poidsFichier <> 0){
	if($poidsFichier < $MAX_SIZE){
		if(isExtAuthorized($extension)){
			$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$chaine."_".$nomFichier);
			if($uploadOk){
				echo "<h1>Upload réussi !</h1><br />";
                echo "Code de l'image : $chaine.<br />";
                echo "Nom du fichier sur notre server : $nomReelFichier<br/>";
                echo "Poids du Fichier : $poidsFichierK Ko<br />";
                echo "<br />taille réel : $width x $height<br />";
                echo "<h2>Liens :</h2>";
				echo "Lien direct : http://www.OUKETÉ.com/images/$nomReelFichier<br />";
				echo "Pour un forum : [IMG] http://www.OUKETÉ.com/images/$nomReelFichier /IMG<br />";
				echo(createReturnLink());
                }else{
				echo "<div id=\"error\"><h2>ERREUR</h2>L'upload a échoué snif !</div><br />";
                createReturnLink();
                }
		}else{
			echo "<div id=\"error\"><h2>ERREUR</h2>Les fichiers avec l'extension $extension ne peuvent pas être uploadés snif !</div><br />";
			createReturnLink();
		}
	}else{
		$tailleKo = $MAX_SIZE / 1000;
		echo "<div id=\"error\"><h2>ERREUR</h2>Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko snif.</div><br />";
		createReturnLink();
	}		
}else{
	echo"<div id=\"error\"><h2>ERREUR</h2>Le fichier choisi est invalide (Taille nulle) snif !</div><br />";
	createReturnLink();
}

?>

Conclusion :


Pardon Ceacy de t'avoir piqué ton CSS :p.
et pardon pour les fautes.
Merci pour vos commentaires futurs.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.