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] Problème d'extension avec l'upload


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2005
    Messages : 81
    Points : 56
    Points
    56
    Par défaut [Upload] Problème d'extension avec l'upload
    Salut,
    j'ai fais une fonction d'uploader de fichiers sur lesquels je verifie l'extension, tout marche bien (enfin presque), en fait je ne dois pouvoir uploader que des images, mais lorsque j'upload un .exe il passe, alors qu'avec les autres extensions, cela ne passe pas...
    Pouvez-vous m'aider SVP.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    //fonction d'upload de fichier la variable $allowedExt peut contenir plusieurs extension separé par un pipe
    //exemple d'utilisation:
    //uploadImage("upload","../upload","150000",".jpeg|.gif|.png");
    function uploadImage($nomChamp,$path,$maxSizeInOctet,$allowedExt){
     
    			// Taille maximum
    			$MAX_FILE_SIZE = $maxSizeInOctet;
     
    			//recuperation de la ou des extension acceptées
    			$tab= preg_split("/\|/", $allowedExt, -1, PREG_SPLIT_NO_EMPTY);
    			$nbExt = sizeof($tab);
     
    			$ext = explode('|', $allowedExt, $nbExt);
     
     
    			// Dossier de destination du fichier
    			$folder = $path;
     
    			// Variables récupérée par methode POST du formulaires
    			$fileName = $_FILES[''.$nomChamp.'']['name'];
    			$fileType = $_FILES[''.$nomChamp.'']['type'];
    			$fileSize = $_FILES[''.$nomChamp.'']['size'];
    			$fileTmp = $_FILES[''.$nomChamp.'']['tmp_name'];
     
    			$extension = strrchr($fileName, ".");
     
    			$auth_ext = array($ext);
     
    			function isExtAuthorized($extension){
    			//global $auth_ext;
    				if(@in_array($extension,$auth_ext))
    				{
    					return true;
    				}
    				else
    				{
    					return false;
    				}
    			}
    			// Diverses test afin de savoir si :
    			// Le format de fichier correspond à notre tableau array
    			if(!(isExtAuthorized($extension))){$error = 1;}
     
    			// La taille du fichier n'est pas dépassée
    			if($fileSize > $MAX_FILE_SIZE){$error = 2;}
     
    			// Le fichier n'existe pas déjà
    			if(file_exists($folder."m_".$fileName)){$error = 3;}
     
    			// Si tout va bien, c'est bien déroulé
    			if(copy($fileTmp,''.$folder.''.$fileName.'')) {$error = 0;}
     
    			// Switch servant simplement à la gestion des erreures
    			switch($error){
    				case'0':
    					echo("Fichier correctement envoyé.");
    					break;
    				case'1':
    					echo("Problème format de fichier incorrecte.");
    					break;
    				case'2':
    					echo("Problème fichier trop volumineux.");
    					break;
    				case'3':
    					echo("Problème le fichier déjà existant.");
    					break;
    			}
     
    }

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, tu peux jeter un oeil dans les sources PHP : http://php.developpez.com/sources/?page=forms#uploadext

    Bon développement
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  3. #3
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2005
    Messages : 81
    Points : 56
    Points
    56
    Par défaut
    Merci de ta réponse. J'ai bien regardé le lien que tu m'as donné, et je constate que pour la vérification des extensions, c'est exactement ce que je fais.:

    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function isExtAuthorized($extension){
    	//global $auth_ext;
    		if(@in_array($extension,$auth_ext))
    		{
    			return true;
    		}
    		else
    		{
    			return false;
    		}
    	}
    Le code du lien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (in_array(extension($file), array('gif', 'jpg', 'png', 'swf', 'swc',
                            'psd', 'tiff', 'bmp', 'iff', 'jp2',
                            'jpx', 'jb2', 'jpc', 'xbm', 'wbmp')))
    Les .exe passent malgré cela.

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, tu as affiché l'extension pour voir si ta fonction retourne bien exe ?
    Il y a peut-être un souci de ce côté
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  5. #5
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2005
    Messages : 81
    Points : 56
    Points
    56
    Par défaut
    Oui, j'ai bien verifié, j'ai fais un echo des extensions autorisées, et un echo de l'extension du fichier. J'ai même essayé de tester sur les types MIME, mais sa ne change rien.

    J'ai trouvé une alternative, en fait je test tout mon formulaire avec du javascript et pour les fichiers qui doivent êtres uploader, je test leur extensions, et donc le formulaire n'est pas valider tant que les extensions ne sont pas bonnes.

    Mais j'aimerais quand même que ma fonction d'upload fonctionne parfaitement car je pensais l'utiliser dans d'autre site.

    Merci de ta reponse.

Discussions similaires

  1. [Lazarus] Problème d'extension avec TSaveDialog
    Par ChPr dans le forum Lazarus
    Réponses: 2
    Dernier message: 02/07/2012, 16h37
  2. Réponses: 11
    Dernier message: 29/06/2009, 22h20
  3. Script Upload problème d'emplacement du fichier uploadé
    Par Phoenix0007 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 7
    Dernier message: 09/10/2007, 19h52
  4. [Sécurité] Problème de sécurité avec l'upload
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 14/04/2006, 10h54
  5. [Upload] Problème pour gestion d'erreur avec class
    Par allserv dans le forum Langage
    Réponses: 2
    Dernier message: 27/12/2005, 13h00

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