Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 01/08/2011, 18h59   #1
Invité de passage
 
Inscription : juin 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 18
Points : 4
Points : 4
Par défaut Problème vérification extension fichiers envoyés.

Bonjour,

Je n'arrive pas à contrôler l'extension (PDF) des différents fichiers qui sont postés via mon formulaire

Mon formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
      <form class="form"  name"form" method="post" enctype="multipart/form-data" action="upload.php">
			<h2>Ajouter un PDF</h2>
 
			<div>
				<label for="pass">Mot de passe</label><input type="password" name="pass" />
			</div>
			<div id="fichier1">
				<label for="fichier">Fichier 1</label><input type="file" name="fichier" id="fichier" onChange="affCache('fichier2');"/>
			</div> 	
			<div id="fichier2" style="display:none">
				<label for="fichier2">Fichier 2 </label><input type="file" name="fichier2" id="fichier2" onChange="affCache('fichier3');"/>
			</div> 
			<div id="fichier3" style="display:none">
				<label for="fichier3">Fichier 3 </label><input type="file" name="fichier3" id="fichier3" />
			</div> 
 
			<div class="button">
				<input type="hidden" name="MAX_FILE_SIZE" value="52428800" />
				<button type="submit" name="upload">Soumettre</button>
				<button type="reset">Annuler</button>
			</div>
	   </form>
Mon script php qui vérifie le formulaire :
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?php
 
if( isset($_POST['upload']) ) // si formulaire soumis
{
 
    $content_dir = 'upload/'; // dossier où sera déplacé le fichier
 
    $tmp_file = $_FILES['fichier']['tmp_name'];
	$tmp_file2 = $_FILES['fichier2']['tmp_name'];
	$tmp_file3 = $_FILES['fichier3']['tmp_name'];
 
    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier 1 est introuvable");
    }
	if (empty($tmp_file)) 
	{  
		if ( !is_uploaded_file($tmp_file2) )
		{
			exit("Le fichier 2 est introuvable");
		}
	}
	if (empty($tmp_file)) 
	{  
		if ( !is_uploaded_file($tmp_file3) )
		{
			exit("Le fichier 3 est introuvable");
		}
	}
    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];
	$type_file2 = $_FILES['fichier2']['type'];
	$type_file3 = $_FILES['fichier3']['type'];
 
 
    if( !strstr($type_file, 'pdf') )
    {
        exit("Le fichier 1 n'est pas un pdf");
    }
	if (empty($type_file)) 
	{  
		if( !strstr($type_file2, 'pdf') )
		{
			exit("Le fichier 2 n'est pas un pdf");
		}
	}
	if (empty($type_file)) 
	{  
		if( !strstr($type_file3, 'pdf') )
		{
			exit("Le fichier 3 n'est pas un pdf");
		}
	}	
	// on vérifie la taille (max = 50 MO)
	$maxsize = '52428800';
	$size_file = $_FILES['fichier']['size'];
	$size_file2 = $_FILES['fichier2']['size'];
	$size_file3 = $_FILES['fichier3']['size'];
 
	if ($_FILES['fichier']['size'] > $maxsize)
	{
	 exit("Le fichier dépasse 50 MO");
	}
	if (empty($type_file)) 
	{ 
		if ($_FILES['fichier2']['size'] > $maxsize)
		{
		 exit("Le fichier 2 dépasse 50 MO");
		}
	}
	if (empty($type_file)) 
	{ 
		if ($_FILES['fichier3']['size'] > $maxsize)
		{
		 exit("Le fichier 3 dépasse 50 MO");
		}
	}
 
	// on vérifie le mot de passe
	$mdp = '123456';
	$mdp2 = $_POST['pass'];
	if( $mdp != $mdp2)
	{
		exit("mot de passe incorrect");
	}
 
    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];
	$name_file2 = $_FILES['fichier2']['name'];
	$name_file3 = $_FILES['fichier3']['name'];
 
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
	{
		exit("Nom de fichier non valide");
	}
	if (empty($tmp_file2)) 
	{ 
		if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file2) )
		{
			exit("Nom de fichier 2 non valide");
		}
	}
	if (empty($tmp_file3)) 
	{ 
		if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file3) )
		{
			exit("Nom de fichier 3 non valide");
		}
	}
 
	if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
	{
		exit("Impossible de copier le fichier 1 dans $content_dir");
	}
	if (isset($name_file2)) 
	{ 
		if( !move_uploaded_file($tmp_file2, $content_dir . $name_file2) )
		{
			echo "Fichier(s) envoyé(s) :". "<br/>";
			foreach($_FILES as $fichier)
			{
				print "*" . $fichier['name'] . "<br/>";
			}
			exit("Fichier 2 : non sélectionné");
		}
	}
	if (isset($name_file3)) 
	{ 
		if( !move_uploaded_file($tmp_file3, $content_dir . $name_file3) )
		{
			echo "Fichier(s) envoyé(s) :". "<br/>";
			foreach($_FILES as $fichier)
			{
				print "*" . $fichier['name'] . "<br/>";
			}
			exit("Fichier 3 : non sélectionné");
		}
	}
 
    echo "Fichier(s) envoyé(s) :". "<br/>";
	foreach($_FILES as $fichier)
	{
		print "*" . $fichier['name'] . "<br/>";
	}
 
 
}
 
?>]
<?

Enfaite je m'explique, les fichiers postés arrivent bien sur mon serveur dans le répertoire de destination. Cependant lorsqu'on poste en premier un PDF, puis des fichiers autre que PDF ils sont aussi uploader...
En gros seul l'extension du premier fichier posté est vérifiée...

Merci de me venir en aide , je suis débutant .
Si vous avez des sugestions à ajouter à mon formulaire n'hésitez pas !

Cordialement,

Sasuke.
sasuke001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 19h27   #2
Membre confirmé
 
Avatar de Korri
 
Homme Hugo Vacher
Étudiant
Inscription : mai 2008
Messages : 158
Détails du profil
Informations personnelles :
Nom : Homme Hugo Vacher
Âge : 23
Localisation : Canada

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

Informations forums :
Inscription : mai 2008
Messages : 158
Points : 224
Points : 224
Ouille mes yeux, merci d'utiliser la balise [code]

Ensuite de ce que je voie, tu ne teste le type de tes fichiers 2 et 3 que si le fichier 1 à un type vide...
__________________
  • Quand la discutions est terminée, cliquez sur , Pensez y !
  • Vous voyez un message pertinent et de qualité ? Votez pour ce message !
Korri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 19h35   #3
Invité de passage
 
Inscription : juin 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 18
Points : 4
Points : 4
Exact... Mais comment faire? Les utilisateurs ne sont pas obligés de poster 3 fichiers. Donc les input file suivante sont forcément vide...
Mes input file apparaissent seulement si la précédente est rempli (à l’aide d’un javascript). Je compte par la suite en mettre plus que 3.

J'ai corrigé mon code comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    if( !strstr($type_file, 'pdf') )
    {
        exit("Le fichier 1 n'est pas un pdf");
    }
	if (($type_file2) != '') 
	{  
		if( !strstr($type_file2, 'pdf') )
		{
			exit("Le fichier 2 n'est pas un pdf");
		}
	}
	if (($type_file3) != '') 
	{  
		if( !strstr($type_file3, 'pdf') )
		{
			exit ("Le fichier 3 n'est pas un pdf");
		}
	}

J’ai changé les balises QUOTE
sasuke001 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 10h04.


 
 
 
 
Partenaires

Hébergement Web