Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2007, 14h33   #1
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 81
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2005
Messages : 81
Points : 25
Points : 25
Envoyer un message via MSN à Neji44
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 :
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;
			}
 
}
Neji44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h48   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 570
Points : 2 506
Points : 2 506
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
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 14h15   #3
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 81
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2005
Messages : 81
Points : 25
Points : 25
Envoyer un message via MSN à Neji44
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 :
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 :
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.
Neji44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 18h33   #4
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 570
Points : 2 506
Points : 2 506
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
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 09h44   #5
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 81
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2005
Messages : 81
Points : 25
Points : 25
Envoyer un message via MSN à Neji44
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.
Neji44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h57.


 
 
 
 
Partenaires

Hébergement Web