didygwatinik
Messages postés58Date d'inscriptiondimanche 26 octobre 2008StatutMembreDernière intervention15 décembre 2009
-
8 janv. 2009 à 16:29
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 mars 2013
-
10 janv. 2009 à 00:58
Bonjour,
J'ai réalisé un site en local qui marche très bien, maintenant je l'ai envoyé sur internet mais je ne vois pas du tout comment je pourrai utiliser la fonction move_upload_file. Je l'ai hébergé j'ai free. A la base, voilà mon code :
/*if(is_dir('Images')==false)
mkdir("Images",0777,true);//on crée le répertoire images s'il n'existe pas
chdir('Images');//on se place sur le répertoire images*/
$nomFichier = md5(uniqid(rand(), true));
$nomAvatar= "$nomFichier.{$extension_upload}";
//transfert de l'image
$resultat = move_uploaded_file($_FILES['avatarMembre']['tmp_name'],Images/$nomAvatar);
Avec ce code , j'obtiens l'erreur : Warning: Division by zero in /mnt/102/sda/1/a/didyjeunestalents/membre_enregistre.php on line 106
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/mnt/102/sda/1/a/didyjeunestalents/php3ors0f' to '' in /mnt/102/sda/1/a/didyjeunestalents/membre_enregistre.php on line 106
Quelqu'un peut-il m'aider, en clair je veux que l'image se retrouve dans le fichier "Images" qui est sur mon serveur.
J'ai déjà lu d'autres posts mais je ne comprends pas
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 mars 2013 9 janv. 2009 à 22:32
j'ai eu ce problème une fois... J'avais trouvé une sollution qui consistait à utiliser la fonction rename(): http://ch2.php.net/manual/en/function.rename.php avec comme nom original $_FILES["monfichier"]["tmp_name"].
C'est pas des plus propre, mais ça avait marché pour moi.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 9 janv. 2009 à 23:21
@julsoft :
Ca peut être une idée (je serai par contre étonné que ça fonctionne sur un serveur free), mais la prmière des choses à faire est d'avoir un code "propre". Ce que j'énonçais dans mon précédent post pose à coup sur pb, comme les "{"
Kohntark-
Vous n’avez pas trouvé la réponse que vous recherchez ?
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 mars 2013 9 janv. 2009 à 23:37
Alors (toujours si mes souvenirs sont bons) ça fonctionne chez free (c'est chez eux que j'hàbergais une partie de mes données à l'époque). Aparemment il est conseillé d'utiliser move_uploaded_file() pour des raisons de sécurité (aparemment en raison du contenu potentiellement dangereux du fichier):
"
This function checks to ensure that the file designated by filename is a valid upload file (meaning that it was uploaded via PHP's HTTP POST upload mechanism). If the file is valid, it will be moved to the filename given by destination .
This sort of check is especially important if there is any chance that anything done with uploaded files could reveal their contents to the user, or even to other users on the same system
"
Je comprends ça comme un moyen d'empécher qu'on upload un stream qui aille ensuite interagir avec le reste du systeme, mais j'avoue sécher un peu sur ce point...
Niveau "propreté" du code, il faut en fait surtout faire attention à avoir des noms de fichiers qui ne posent pas de problème (une solution relativement simple est de remplacer tous les caractéres spéciaux par "_" à l'aide d'une regexp, comme on peut le faire à l'aide de detox sous linux).
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 10 janv. 2009 à 00:53
Salut Julsoft,
Je reste étonné que ça fonctionne :o) ... mais si tu le dis je te crois sur parole.
Je viens de faire un test sur mon serveur (perso) et ça fonctionne. Ca reste tout de même super dangereux je trouve. Suivant comment est fait le script ça peut ouvrir de très grosses failles de sécurité.
Nous sommes d'accord pour les noms de fichiers exotiques, mais le principal problème ici est :
move_uploaded_file($_FILES['avatarMembre']['tmp_name'],Images/$nomAvatar); = >
(je n'ai pas testé)
le "Images/$nomAvatar" ne fonctionnera jamais (interprété sans doute comme une constante non déclarée) A coup sur le script plantera.
Ensuite il y a ça : $nomAvatar"$nomFichier.{$extension_upload}"; > pourquoi des "{" ???
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 mars 2013 10 janv. 2009 à 00:58
Je suis tout à fait d'accord avec ce que tu soulèves comme problèmes au niveau du scrupt de base (les "{}" par exemple. J'étais parti sur ta première correction en fait.
Niveau failles de sécurités, je t'avoues que je ne vois pas vraiment ce que ça pourait ouvrir de plus que le simple fait de permettre l'upload de fichier je t'avoue.