Le nom des images temporaires

Invité
Invité n'ayant pas de compte PHPfrance

21 juin 2006, 16:46

Quand j'upload une image et que j'essaye d'afficher le nom ou le nom temporaire il me retourne toujours des nom qui n'ont rien a voir avec ce que je cherche du type : /tmp/phpGVVb77 et je ne comprends pas pourquoi.

J'utilise :
echo $_FILES['photo']['tmp_name'];
ou
	echo $_FILES['photo']['name'];
mais toujours la même chose les 2 me retourne des noms etrange.

Je pensais que tmp_name etait le nom sur le disque local du client ...

Mammouth du PHP | 965 Messages

21 juin 2006, 16:46

excusez moi je ne m'etais pas log :evil:

Eléphant du PHP | 50 Messages

21 juin 2006, 16:58

Pour "tmp_name" c'est totalement normal qu'il te retourne un nom pareil, mais pour "name" il doit te retourner le nom du fichier que tu lui as envoyé.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

21 juin 2006, 17:03

$_FILES['userfile']['name']

Le nom original du fichier, tel que sur la machine du client web.
$_FILES['userfile']['tmp_name']

Le nom temporaire du fichier qui sera chargé sur la machine serveur.
$_FILES['userfile']['error']
Ce tpm_name est en fait le nom bizarre quand tu charges réellement le fichier sur le serveur, il le met dans un répertoire temporaire (paramétrable dans php.ini).
Ensuite, avec move_uploaded_file() tu le déplaces là où tu veux.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 965 Messages

21 juin 2006, 17:32

justement en fait j'upload le fichier mais je veux faire des verif avant de le telecharger sur mon FTP.

Ce que je veux c'est tester le fichier avec le nom tmp_name pour par exemple tester l'extension !

Une idée ?

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

21 juin 2006, 17:38

Tu ne peux absolument rien faire en php sur le fichier tant que celui-ci n'a pas été uploadé sur le serveur... les seuls controles que tu peux effectuer sont ceux faisables en javascript ou html sur le formulaire (ce qui doit se limiter à quelque chose comme récupérer l'extension, limiter les types mimes autorisées avec certains navigateurs, etc.)

Une fois le fichier uploadé sur le serveur par contre tu peux utiliser php pour connaitre la taille, le type mime etc. et savoir si tu le déplaces ou non hors du dossier temporaire

Mammouth du PHP | 965 Messages

21 juin 2006, 17:46

mouais donc si un fichier ne respecte pas la taille que je veux il l'upload quand même c'est pas terrible quand même ou pire si on m'upload un hack.php je l'upload avant de le verrifier ?

je trouve pas ca logique.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

21 juin 2006, 17:55

Le TEMPDIR est régulièrement nettoyé :) puisque par défaut il s'agit du répertoire /tmp et c'est là que le serveur load ton fichier...
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 134 Messages

21 juin 2006, 17:57

de toute foçon quand tu proposes de telecharger un image tu dois bien donner un champ de saisie pour rentrer le chemin du fichier. Donc ton controle tu le fais sur la variable qui contient le nom du fichier.

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

21 juin 2006, 18:09

Pour le coup du "hack.php", dans son nom temporaire, le fichier n'a pas d'extension (php ou autre) il est donc impossible que ton serveur l'exécute si jamais quelqu'un avait accès au dossier temporaire et parvenait par hazard à retrouver le nom qui lui a été assigné.

En revanche à toi d'assurer un minimum de sécurité en filtrant les fichiers à risque lors du move_upload_file()... personnellement je rajoute un .txt à tout fichier avec l'extension .php* que j'upload avant de le déplacer :)

Mammouth du PHP | 965 Messages

21 juin 2006, 18:25

Ok c'est ce que je risque de faire mais moi je refuse directement tout .php ou autre script c'est juste de l'upload d'image en tout cas en utilisant le "name" tout passe sans problème.

Je met donc [Resolu] et merci pour ces reponses fortes instrutives

EDIT : ah non je peux pas mettre resolu n'etant pas l'auteur du sujet !