Page 1 sur 1
Simple...
Posté : 07 mars 2011, 00:51
par thiceli
Salut !!!
Je cherche un petit coup de main. Débutant en php, je cherche a faire un truc tout simple :
Un formulaire où on peut chercher un fichier sur le Disque dur et qui envoie ce fichier sur mon serveur.
Le fichier aura toujours le même nom, toujours la même taille...
En fait c'est que je veux un petit formulaire pour changer simplement et régulièrement la photo d'accueil de mon site...
Voilà ce que j'ai fait et qui marche pas...
Le formulaire qui est dans ma page "administrateur" :
<form method="post" enctype="multipart/form-data" action="insertion.php">
<input type="hidden" name="userfile" size="50">
image :
<br><input TYPE="file" NAME="image"><br>
<br>
<input type="submit" value="Envoi">
</form>
Le script php pour "récupérer" l'image :
<html>
<body>
<?php
$stock = '/img';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $stock.$_FILES['userfile']['name']))
{
echo "Le fichier ".$_FILES['userfile']['name'].
" a été téléchargé avec succès dans ".$stock;
}
?>
</body>
</html>
Chépo...
en même temps, je suis pas un kador....
MERCI A VOUS !!!
Re: Simple...
Posté : 07 mars 2011, 01:12
par misterflo
Bonsoir,
Tout d'abord, à aucun moment dans le
move_uploaded_file tu n'utilise ton champ où il y a l'image, donc forcement PHP ne trouvera jamais ton image

Tu mets le champ
'userfile' en fait il faut que tu mette le champs
'image'.
Ensuite ton
$stock me semble faux, il vaudrait mieux mettre
'img/' ou alors
'./img/' (qui ont deux significations différentes).
Par contre dans le cas présent tu ne vérifie pas la taille du fichier que tu upload.
http://www.phpfrance.com/tutoriaux/inde ... e-fichiers
Tu trouveras ton bonheur à travers ce lien

Re: Simple...
Posté : 07 mars 2011, 13:22
par tiriiiiii
Ettttttt bien...
depuis ce matin tôt je suis sur le tutorial... qui est le plus clair et le plus précis que j'ai trouvé sur la toile...
ECHEC !!!
Pourtant ça a l'air de marcher.. j'ai le formulaire, les tests d'erreur marchent, le fichier semble passer (page blanche a la fin du script...)
et puis non... il n'y a rien sur mon répertoire... l'image ne s'est pas téléchargée...
J'ai pourtant presque rien changé...
Je craaaaaaaaaaaque !!!
Partie htm :
<!-- Formulaire --><!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
<form method="POST" action="insertion.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="photo">Photo :</label><input type="file" name="photo" /></p>
<p><label for="photo_2">Photo 2 :</label><input type="file" name="photo_2" /></p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
Script PHP :
<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = '/img';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
}
}
?>
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
Re: Simple...
Posté : 07 mars 2011, 13:32
par ZoiDrums
Ne faudrait-il paas ajouter un '/' entre ton répertoire de destination et le nom de ton fichier?...
Pour faire simple, je mettrais : $dest_dossier = './img/';
Re: Simple...
Posté : 07 mars 2011, 13:55
par xTG
Le soucis est clairement le / manquant comme indiqué par
ZoiDrums.
Tes actuels upload doivent se trouver dans le dossier du script avec des noms comportant le dossier.

Re: Simple...
Posté : 07 mars 2011, 14:07
par thiceli
OUIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIi
AYEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE !
Contennnnnnnnnnnnnnnnnnnnnnn !!!!
MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI