Simple...

Petit nouveau ! | 4 Messages

07 mars 2011, 00:51

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 !!!

Eléphant du PHP | 241 Messages

07 mars 2011, 01:12

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 :D
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 :D

tiriiiiii
Invité n'ayant pas de compte PHPfrance

07 mars 2011, 13:22

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>';
}
?>

Eléphanteau du PHP | 10 Messages

07 mars 2011, 13:32

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/';

ViPHP
xTG
ViPHP | 7331 Messages

07 mars 2011, 13:55

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. ;)

Petit nouveau ! | 4 Messages

07 mars 2011, 14:07

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