Ma gestion de l'upload

Contenu du snippet

Voila comment je gère l'upload sur mon site et ma fois ca marche pas mal.
PS : j'ai bien sur changer les tests de sécurité !!

Source / Exemple :


la page HTML : 
<form action="traitement.php" method="post" enctype="multipart/form-data" name="fichier">
<input name="MAX_FILE_SIZE" type="hidden" value="20000"> 
// la taille est ici limitée à 20000 caractères
<input type="file" name="file">
<input type="submit" name="Submit" value="Envoyer">
</form>

le traitement :
<?
if (isset ($file) && $HTTP_POST_FILES["file"]["error"]==0 && $HTTP_POST_VARS['MAX_FILE_SIZE']>=$HTTP_POST_FILES["file"]["size"])
// les vérifications d'usage (la variable existe, pas d'erreur et la taille est correcte )
{
$nom=$HTTP_POST_FILES["file"]["name"]; 
// récupération du nom du fichier
$point=strrpos($nom,"."); // on recherche le dernier point dans le nom du fichier
if (!$point) $ext=""; else $ext=strtolower(substr($nom,$point));
// pour récuperer l'extension du fichier
if (($ext==".zip") || ($ext==".sql" )) // pour l'exemple je ne garde que ces 2 extensions valides
{
// pour la sécurité on choisit un nouveau nom de fichier ici on ajoute 1,2.. et une extension
$nombre=1;
$repertoire_upload="uploadphp/";
$nouveau_nom=$repertoire_upload.$nom.$nombre.$ext.".ttt";// encore pour la secu, j'ajoute un .ttt comme seconde extension
while (file_exists($nouveau_nom))
{
$nombre++; // on incremente le nombre tant que le nom du fichier existe
$nouveau_nom=$repertoire_upload.$nom.$nombre.$ext.".ttt";
}// fin while
if (@move_uploaded_file($file,$nouveau_nom)) echo "Téléchargement réussi"; else echo " Echec du transfert";
// le point crucial qui tranfert le fichier temporaire en fichier permanent avec @ devant pour éviter un warning PHP en cas d'échec
}// fin if ext
else 
{
$erreur="le type de fichier est invalide ( seulement .sql et .zip ).";
echo $erreur;
}// fin else ext
}// fin du premier if
else echo "Vérifier le formulaire d'envoi de fichier ( la taille du fichier est limité à ". $HTTP_POST_VARS['MAX_FILE_SIZE']." )";
?>

Conclusion :


J'espère avoir été assez clair, sinon un petit tour sur http://www.php-easy.com pour les questions et les remarques. merci

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.