Upload de fichier

Soyez le premier à donner votre avis sur cette source.

Vue 14 560 fois - Téléchargée 1 582 fois

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

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2008

Registrer Global n'est pratiquement plus utiliser et les hébergeur l'ont pratiquement tous bloquer.
Messages postés
51
Date d'inscription
samedi 14 juillet 2007
Statut
Membre
Dernière intervention
2 septembre 2009

bonsoir

l upload fontionne

mais c est dans les liens que ça na vas pas
le nom du fichier uploadé n a pas le bon nom.

image1
deviens
_image1

quelqu un a une idée?
Messages postés
4
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
27 janvier 2010

bonjour Shauhuld,
merci infiniment pour ton aide
a bientot
Messages postés
30
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
20 juillet 2008

Bonjour REDA984,

Le dossier destianation est défini dans cette variable :

$DESTINATION_FOLDER = "./images/";

cela veut dire que le fichier sera envoyer dans le dossier images/ situé au même endroit que le script d'upload.

J'espère que ça te parlera et que cela t'aidera. sinon n'hésite pas à redemander.
(si tu souhaite continuer en programmation PHP je te conseil le site : www.lephpfacile.com , il est très bien. :))

Sh.
Messages postés
4
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
27 janvier 2010

bonjour,
je suis encore débutant en programmation.
Puis-je savoir où se fait l'envoi du fichier uploadé
merci
Afficher les 18 commentaires

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.