Problème gestion de fichiers en php

ESCURE -  
 hotrod -
Bonjour,

Je souhaite réaliser un petit site en php qui permet d'uploader des fichiers (word, pdf, open office) depuis un formulaire vers un dossier de mon hébergement.

Voici le code que j'utilise :

-> pour le formulaire

<form method="POST" action="upload.php" enctype="multipart/form-data">
<!-- On limite le fichier à 100Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Fichier : <input type="file" name="avatar">
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form>

-> pour l'interprétation du formulaire

<?php
$dossier = '../rapportdestage/rapport';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('png', 'gif', 'jpg', 'jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>


Mon code ne fonctionne pas, en effet, j'ai toujours des erreurs prévues par le code. Ex : le format de fichier n'est pas le bon...

Je suis débutante et ne voit pas ou se trouvent mes erreurs.

Merci

Adeline
adelineescure@orange.fr
A voir également:

1 réponse

hotrod
 
bon j'ai pas tout regardé mais déjà pour les extensions :
strrchr($_FILES['avatar']['name'], '.');
va te retourner .jpg et non jpg

D'ou résultat faux sur le in_array

Ensuite j'ai pas compris d'ou sort le tmp_name de filesize($_FILES['avatar']['tmp_name']);
0