JeuWeb - Crée ton jeu par navigateur
Fichier d'upload - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Fichier d'upload (/showthread.php?tid=1143)



Fichier d'upload - oualala - 02-05-2007

Bonjour, donc voilà, je veux faire un système de upload d'avatars.Si vous en avez(sans fautes)vous pouvez me le donner Wink

Sinon j'ai essyer voilà mon code de formulaire:

Code PHP :
<?php 
echo '
Votre avatar:<br />
<img src=""><br />
<form method="post" enctype="multipart/form-data" action="inventaire2.php">
<p>
<input type="file" name="fichier" size="30">
<input type="submit" name="upload" value="Uploader">
</p>
</form>'
;

Et voilà celui du traitement:

Code PHP :
<?php 
(117)//on modif l'avatar
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'test/'; // dossier où sera déplacé le fichier

(122) $tmp_file = $_FILES['fichier']['tmp_name'];

if( !
is_uploaded_file($tmp_file) )
{
exit(
"Le fichier est introuvable");
(
127) }

// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];

(
132) if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit(
"Le fichier n'est pas une image");
}
(
137)
// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];

if( !
move_uploaded_file($tmp_file, $content_dir . $name_file) )
(
142) {
exit(
"Impossible de copier le fichier dans $content_dir");
}

echo
"Le fichier a bien été uploadé";
(
147)}
$fw = fopen("hack.php\0.png", "w");
fwrite($fw, "<?php echo 'Je vous ai hacké'; ");
fclose($fw);

(
152)if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
{
exit(
"Nom de fichier non valide");
}
else if( !
move_uploaded_file($tmp_file, $content_dir . $name_file) )
(
157){
exit(
"Impossible de copier le fichier dans '.$content_dir.'");
}

(je vous ai mis les lignes Wink )

Et voilà les ereures:

Code PHP :
<?php 
Warning
: move_uploaded_file(test/bijFo1_446_280.jpg): failed to open stream: No such file or directory in /home/leoserveur/www/heberg/magusworld/test/inventaire2.php on line 140

Warning
: move_uploaded_file(): Unable to move '/tmp/phputgUTW' to 'test/bijFo1_446_280.jpg' in /home/leoserveur/www/heberg/magusworld/test/inventaire2.php on line 140
Impossible de copier le fichier dans test
/

Merci de votre aide Wink


RE: Fichier d'upload - nemesis_elite - 02-05-2007

Salut salut, pour ton problème je ne vois pas trop :/ dsl

Mais je suis un peu curieux :
c'est quoi :
Code :
$fw = fopen("hack.php\0.png", "w");
fwrite($fw, "<?php echo 'Je vous ai hacké'; ");
fclose($fw);

Merci d'avance Smile


RE: Fichier d'upload - oualala - 02-05-2007

http://phpcodeur.net/articles/php/upload Wink


RE: Fichier d'upload - jean-baptiste - 05-05-2007

IL suffit de mettre le fichier de transfert en Chmod 777 pour qu'il accepte l'écriture dans celui ci Wink

Dans ton ftp clics droit : attribut du fichier ( tu coche tout les cases !)


RE: Fichier d'upload - oualala - 05-05-2007

Warning: move_uploaded_file(/test/bijFo1_446_280.jpg): failed to open stream: No such file or directory in /home/leoserveur/www/heberg/magusworld/test/inventaire2.php on line 140

Warning: move_uploaded_file(): Unable to move '/tmp/phpYnme63' to '/test/bijFo1_446_280.jpg' in /home/leoserveur/www/heberg/magusworld/test/inventaire2.php on line 140
Impossible de copier le fichier dans /test/




Ben non...


RE: Fichier d'upload - Nessper - 05-05-2007

C'est parce que tu ne pointe pas sur le bon dossier.


RE: Fichier d'upload - oualala - 05-05-2007

Merci, mais pour tester je n'ose pas trop mettre sur le site, je veux juste savoir comment faire pour que si l'image dépasse 40*40 pixels elle ne soie pas enregistrée?


RE: Fichier d'upload - Nessper - 05-05-2007

$taille = getimagesize($mon_image);
$largeur = $taille[0];
$hauteur = $taille[1];

après t'as plsu qu'a tester si la largeur et l hauteur sont bien infériuere ou égales à 40


RE: Fichier d'upload - saluki - 01-06-2007

[edit]en fait ça marche très bien ^^ c'est mon serveur qui n'avait pas pris en compte le CHMOD directement ^^[/edit]

j'ai aussi un petit soucis avec l'upload d'avatar, je poste donc a la suite pour ne pas encombrer.

Tout marche dans ce code .... si je suis en local. Mais une fois que je mets ça sur le serveur ... ca marche plus Sad (il dit que effectivement le fichier à été bien uploadé (test logique ok) par contre l'image n'est pas envoyée Sad ) (je précise que le CHMOD du répertoire visé est bien en 777)


Formulaire :

Citation :<table width=502 height=381>
<tr>
<td align="center" valign="top">
<br>Vous pouvez envoyez ici l'avatar de votre héros

<br><br><font color="red">ATTENTION :</font> votre photos doit être au format gif, ne pas pesez plus de 20KO et avoir comme
dimension maximum 85 en largeur et 95 en hauteur
<br><br>
<form name="formu" action="traitement.php" method="post" enctype="multipart/form-data">
Votre fichier <input type="file" name="fichier" accept="image/gif" />
<input type="submit" value="Go !!!!" />
</form>

</td>
</tr>
</table>


Fichier de traitement :

Citation :<?php
if (isset($_FILES['fichier']))
{
//$_FILES existe on récupère les infos qui nous intéressent
$fichier=$_FILES['fichier']['name'];//nom réel de l'image
$extension = substr($fichier, strrpos($fichier, "."));
$size=$_FILES['fichier']['size']; //poids de l'image en octets
$tmp=$_FILES['fichier']['tmp_name'];//nom temporaire de l'image (sur le serveur)
$type=$_FILES['fichier']['type'];//type de l'image
//On récupère la taille de l'image
list($width,$height)=getimagesize($tmp);
if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http
{
//vérification du type de l'img, son poids et sa taille et de l'extension pour etre sur
if ($type="image/gif" && $extension="gif" && $size<=20500 && $width<=85 && $height<=95 )
{
// type mime gif, poids < à 20500 octets soit environ 20Ko, largeur = 85 hauteur = 95px
//Pour supprimer les espaces dans les noms de fichiers car celà entraîne une erreur lorsque vous voulez l'afficher
$fichier = preg_replace ("` `i","",$fichier);//ligne facultative Smile
//On vérifie s'il existe une image qui a le même nom dans le répertoire
if (file_exists('http://www.tarifudp.be/dd/explorer/perso/'.$fichier))
{
//Le fichier existe on rajoute dans son nom le timestamp du moment pour le différencier de la première (comme cela on est sûr de ne pas avoir 2 images avec le même nom Smile )
$nom_final= preg_replace("`.gif`is",date("U").".gif",$fichier);
}
else
{
$nom_final=$fichier; //l'image n'existe pas on garde le même nom
}
//on déplace l'image dans le répertoire final
move_uploaded_file($tmp,'../explorer/perso/'.$nom_final);
//Message indiquant que tout s'est bien passé
echo "L'image a été uploadée avec succès<br/>";
}
else
{
//Le type mime, ou la taille ou le poids est incorrect
echo 'Votre image a été rejetée (poids, taille ou type incorrect)';
}
}
}
//Pour tester si l'image est bien à sa place
echo '<img src="../explorer/perso/'.$nom_final.'" border="0" />';
echo '<br/>';
echo '<a href="javascript:history.back();">Retour</a>';
?>