IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] Upload d'image, restriction des extensions


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 60
    Points
    60
    Par défaut [Upload] Upload d'image, restriction des extensions
    Bonjour,

    Voilà l'extrait de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // On vérifie le type du fichier, on accepte que les images jpeg/gif/png
    			if (($HTTP_POST_FILES['userfile']['type'] == "image/gif")  
    				|| ($HTTP_POST_FILES['userfile']['type'] == "image/jpeg") 
    				|| ($HTTP_POST_FILES['userfile']['type'] == "image/png")) {
    				// On ajoute l'image dans le dossier
    				$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], "./".$path.$HTTP_POST_FILES['userfile']['name']);
    				// On mémorise l'adresse de l'image
    				$carte_img = "./".$path.$HTTP_POST_FILES['userfile']['name'];
    				// On mémorise le type de l'image
    				$type = $HTTP_POST_FILES['userfile']['type'];
    				// Si la copie n'as pas été fait, on affiche une erreur
    				if (!$res) {
    					$error .=  $lang['304']."<br>\n";
    				}
    			// 	Si le fichier n'est pas une image jpeg/gif/png, on affiche une erreur.
    			} else { 
    				$error .= $lang['305']."<br>\n";
    			}

    Mon soucis est le suivant,
    quand j'upload un fichier genre .doc, j'ai bien l'affichage de l'erreur comme quoi il faut que sa soit un .jpg .gif ou .png.

    Maintenant j'ai fait un autre test en uploadant un .bmp,
    et bien il n'y a pas de message d'erreur et le programme tourne sans vouloir s'arreter....

    C'est parce que le bmp est de type image ?
    Comment je dois rectifier çà ?


    merci

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    au vue du script que tu donnes, le comportement que tu décris est très imporbable, tu es sûr que le script se lance ?(i.e. : que le fichier est totalement uploadé ?) Quelles sont les tailles de ton .doc et de ton .bmp ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 60
    Points
    60
    Par défaut
    Bon ca va pas du tout, j'ai testé avec un autre .doc et il a affiché aucune erreur mais en plus il dit que tout c'est bien passé et que c'est enregistré...

    j'ai donc un problème avec mes restriction d'extension


    edit bon le .doc nest pas accepté, j'ai du oublié de reactualisé ma page apres le transfere ftp.

    mais le .bmp marche toujours pas, il tourne ds le vide

    extrait de mon code un peu plus étendu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // Si on ne upload pas de fichier, on affiche une erreur.
    		if (!is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) { $error .= $lang['302']."<br>\n"; }
    		if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
    			// Si la taille depasse la taille maximum, on affiche une erreur
    			if ($HTTP_POST_FILES['userfile']['size'] > $max_size) {
    				$error .= $lang['303']."<br>\n";
    			}
    			// On vérifie le type du fichier, on accepte que les images jpeg/gif/png
    			if (($HTTP_POST_FILES['userfile']['type'] == "image/gif")  
    				|| ($HTTP_POST_FILES['userfile']['type'] == "image/jpeg") 
    				|| ($HTTP_POST_FILES['userfile']['type'] == "image/png")) {
    				// On ajoute l'image dans le dossier
    				$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], "./".$path.$HTTP_POST_FILES['userfile']['name']);
    				// On mémorise l'adresse de l'image
    				$carte_img = "./".$path.$HTTP_POST_FILES['userfile']['name'];
    				// On mémorise le type de l'image
    				$type = $HTTP_POST_FILES['userfile']['type'];
    				// Si la copie n'as pas été fait, on affiche une erreur
    				if (!$res) {
    					$error .=  $lang['304']."<br>\n";
    				}
    			// 	Si le fichier n'est pas une image jpeg/gif/png, on affiche une erreur.
    			} else { 
    				$error .= $lang['305']."<br>\n";
    			}
    		}
    l'upload est donc verifier

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    tu as essayé de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_FILES['userfile']['type']
    ?

    de plus essaie d'utiliser des else ou des elseif plutôt que des if qui se suivent
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Question bête avant de commencer à regarder ton code : qu'en est-il du temps d'upload ? Le BMP n'est pas du tout un format prévu pour le Net car les fichiers pèsent bien trop lourd : es-tu certain que l'upload se passe bien ? Rappelle-toi que ton script ne commencera vraiment à s'exécuter qu'à la fin du transfert.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 60
    Points
    60
    Par défaut
    suis-je bete !!!!!

    J'ai pas regardé le poid du bmp....
    Il fait 12 Mo !!!

    c'est pour çà que sa tourne sans fin !


    voilà, j'ai testé avec un .bmp tout leger et sa marche!

    rolala j'ai perdu mon temps sur une betise...

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 60
    Points
    60
    Par défaut
    decidement j'ai du mal,
    voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    		if (!is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) { $error .= $lang['302']."<br>\n"; }
    		elseif (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
     
    			// Si la taille depasse la taille maximum, on affiche une erreur
    			if ($HTTP_POST_FILES['userfile']['size'] > $max_size) {
    				$error .= $lang['303']."<br>\n";
    			}
    			// On vérifie le type du fichier, on accepte que les images jpeg/gif/png
    			if (($HTTP_POST_FILES['userfile']['type'] == "image/jpeg")  
    				|| ($HTTP_POST_FILES['userfile']['type'] == "image/gif") 
    				|| ($HTTP_POST_FILES['userfile']['type'] == "image/png")) {
    				// On ajoute l'image dans le dossier
    				$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], "./".$path.$HTTP_POST_FILES['userfile']['name']);
    				// On mémorise l'adresse de l'image
    				$carte_img = "./".$path.$HTTP_POST_FILES['userfile']['name'];
    				// On mémorise le type de l'image
    				$type = $HTTP_POST_FILES['userfile']['type'];
    				// Si la copie n'as pas été fait, on affiche une erreur
    				if (!$res) {
    					$error .=  $lang['304']."<br>\n";
    				}
    			// 	Si le fichier n'est pas une image jpeg/gif/png, on affiche une erreur.
    			} else { 
    				$error .= $lang['305']."<br>\n";
    			}
    		}
    mon problème c'est que j'arrive seulement a ajouter des .gif,
    .jpg et .png j'ai l'erreur "305" mauvaise extension qui s'affiche.
    comprend pas...

  8. #8
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    comme le test se fait sur $HTTP_POST_FILES['userfile']['type'], peu importe l'extension qu'a le fichier que tu uploades, le check est fait au niveau du MIME Type lorsque le fichier est envoyé sur le serveur. Donc le mieux serait de faire un petit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print_r($HTTP_POST_FILES['userfile']);
    au début du script qui est censé traiter ton fichier, et de regarder la valeur de 'type', pour voir si tu as bien le type que tu veux pour le fichier uploadé, qd tu testes avec un jpeg ou un png.
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 60
    Points
    60
    Par défaut
    t'es un chef ! lol

    en effet je comprend mieux, pour le jpeg j'ai : image/pjpeg
    et le png : image/x-png


    par contre tu connaitrais pas un site qui liste toutes les extension images ?

  10. #10
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    une petite recherche google sur "mime types" devrait faire l'affaire

    Mais petite précision, le image/pjpeg ne veut pas dire que TOUS les jpeg vont passer avec ce mime type là... Ce jpeg en question doit certainement etre formaté différement, d'où le fait qu'il n'ait pas le mime type image/jpeg. Donc faudra ajouter ces mime types à ta liste, et non les remplacer.
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 60
    Points
    60
    Par défaut
    Bah j'ai fais ma tite recherche mais rien que image/x-png je le retrouve pas dans la liste, j'espere qu'il n'y a pas d'autre variantes du png ou jpeg.

    Sinon oui j'ai rejouté, et sa marche bien maintenant

  12. #12
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    En fait, lors de l'upload d'un fichier par formulaire et méthode POST en multipart/form-data, c'est le client (le browser) qui choisit le type MIME qui doit être associé à chaque fichier...

    Et certains browsers (IE par exemple) peuvent avoir parfois des types MIME.... étranges...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/03/2007, 22h16
  2. [Upload] Upload FTP avec image > 1Mo
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2007, 13h09
  3. [Upload] upload d'une image
    Par emna_icn dans le forum Langage
    Réponses: 11
    Dernier message: 04/05/2006, 23h14
  4. [Upload] Upload d'une image
    Par Seth77 dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2006, 11h00
  5. [Upload] upload de fichier images
    Par omlip dans le forum Langage
    Réponses: 2
    Dernier message: 03/01/2006, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo