formulaire d'upload

Petit nouveau ! | 1 Messages

02 mai 2011, 15:57

Bonjour a tous c'est mon premier post sur ce forum que je trouve super bien fait et penser.

Voila je vous expose mon problème en espérant que vous pouvez m'aidez.

Alors je veux faire un formulaire qui permet d'uploader seulement des images , le souci c'est que mon code ne fonctionne pas alors que je ne l'est même pas fini.

Je vous explique j'ais essayer avec un code facile et dans le dossier uploads dans mon ftp il y'avais les fichier que j'essayer d'envoié , mais le souci c'est que on pouvais uploader tout ce qu'on voulais ( php etc... ) , j'ais donc voulu modifier le code source et sa ne marchais pas j'ais essayer de réparer mais maintenant tout ce passe comme il le faut lorsqu'on envoie un fichier , mais le fichier n'est en faite pas uploader sur le serveur , de plus j'ais voulu mettre la securiter image/gif , image/jpg image/png mais sa ne fonctionne pas.

J'ais le formulaire d'upload sur mon index et j'ai un fichier cible.

Voici le code source de index.php :
<form action="cible_envoi.php" method="post" enctype="multipart/form-data">
<p> Upload dimage </p>
       <label for="mon_fichier">Fichier (images ( gif,jpg,png| max. 5 Mo) :</label><br />
     <input type="hidden" name="maxsize" value="524285" />
     <input type="file" name="mon_fichier" id="mon_fichier" /><br />
     <label for="titre">Titre du fichier (max. 50 caractères) :</label><br />
     <input type="text" name="titre" value="Titre du fichier" id="titre" /><br />
     <label for="description">Description de votre fichier (max. 255 caractères) :</label><br />
     <textarea name="description" id="description"></textarea><br />
     <input type="submit" name="submit" value="Envoyer" />
</form>
Et voici le code source de cible_envoi.php :
<?php
if ($_FILES['icone']['error'] > 0) $erreur = "Erreur lors du transfert";
if ($_FILES['icone']['size'] > $maxsize) $erreur = "Le fichier est trop gros";
move_uploaded_file($_FILES['mon_fichier']['tmp_name'], 'uploads/' . basename($_FILES['mon_fichier']['name']));
 echo "L'envoi a bien été effectué !";
?>
Voila dite moi donc ce qui fait est pas bon , et s'il vous plait je voudrais aussi qu' une foi le fichier uploader il y'ais une miniature de l'image avec le lien direct de l'image.

J'ai déjâ essayer de trouver la solution seul mais rien ne fonctionne.

Cordialement.

edit: la limitation de la taille du fichier ne marche pas mais les fichier sont bien uploader a présent. j'ai modifier les codes sources sur le tropic ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 mai 2011, 21:20

Pour ta limitation de taille de fichier, c'est parce qu'il te manque deux choses :
- la première, tu utilises une variable $maxsize qui n'est à priori pas définie (essaye plutôt avec $_POST['maxsize'] qui provient de ton formulaire)
- la seconde : ton if() se contente d'afficher un message d'erreur ... puis ton code enregistre le fichier. L'enregistrement ne devrait se faire que si la taille est correcte, il te manque donc un else :)

Pour vérifier qu'il s'agit d'une image, il te faut récupérer le type mime du fichier (tu peux aussi simplement tester l'extension du nom du fichier, mais c'est moins efficace vu qu'il n'y a rien de plus simple que de renommer un fichier)

Pour les vignettes, c'est un peu plus compliqué :)

A voir également : ce topic du forum contribution
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...