Bonjour tous le monde,

Je fait mon site et j'arrive à bien me débrouiller dans la retouche de code déjà fait d'habitude, mais la je cale sur un formulaire...

J ai un formulaire qui fonctionne très bien sauf que lorsque je clic sans mettre d'image jointe il me l'envois pas mais me dit que le message est bien envoyé

1) Comment faire pour qu'il empêche de l'envoyer si tout n'est pas remplit ? ( le script est fait pour, mais ça ne marche pas )
Si je rempli tout sauf la pièce jointe il l'envois dit que c'est ok mais rien n'arrive, en revanche si je complète tout y compris un fichier joint je le reçois bien)
Donc je voudrais que si l'internaute ne marque pas son mail ou autre chose dans le formulaire, il ne l'envois pas et

2)comment faire pour ajouter plusieurs fichiers à joindre dans le même formulaire ?

Merci d'avance pour votre aide.

Fichier HTML :

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
 <table border="2" cellpadding="8" cellspacing="5" width="500">
 
<tr>
 
       <td> <label for="Nom">NOM et Prénom :</label></td>
 
       <td> <input type="text" id="Nom" name="Nom" class="required input_field"  /></td><br></tr>
 
      <tr> <td><label for="email">email :</label></td>
 
       <td> <input type="text" id="email" name="email" class="required input_field" /></td><br></tr>
 
     <tr>  <td> <label for="Message">Message :</label></td>
 
     <td> <textarea id="form-infos" name="Message" rows="10" cols="35" class="required input_field_text"></textarea></td></tr>
 
      <div class="cleaner_h10">
 
      <br>
 
        <div class="cleaner_h10"></div>
 
    <tr>  <td>  <label for="Fichier">Joindre un fichier : (90 Mo max.)</label></td>
 
       <td> <input type="file" name="Fichier" value="">
 
        <input type="hidden" name="MAX_FILE_SIZE" value="90000000"></td></tr>
 
     <tr> <td><div class="cleaner_h20"></div>
 
      </div></td>
 
     <td> <input type="submit" class="submit_btn" name="submit" id="submit" value="Envoyer" align="absmiddle" ></td></tr>
 
</form></center></table>

Fichier php :


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
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<title>Document sans titre</title>
 
</head>
 
<body>
 
<?php
 
('Content-Type: text/html; charset=utf-8');
 
error_reporting (E_ERROR | E_WARNING | E_PARSE);
 
# mail du destinataire
 
$destinataire = "yannick.meunier@hotmail.com";
 
# mail de l'expéditeur
 
$from .= 'devis@vimapub.com';
 
# nom et titre de page
 
$pageName = "Formulaire devis";
 
# en-tête de l'objet du mail (option: vide)
 
$entete = "[dev.ppan.net]";
 
# envoi en copie carbone (option: vide)
 
$email_cc = "";
 
# envoi en copie cachée (option: vide)
 
$email_bcc = "";
 
# nom du répertoire à créer pour upload des pièces jointes
 
$rep = "../upload/"; // ne pas oublier le slash /
 
# taille max de la pièce jointe
 
$taillemax = 90000000;
 
# objet du message
 
$objets = "devis client";
 
# page vers laquelle rediriger le script après envoi réussi
 
$pageconfirme = "../pat/index.html";
 
/*

si $pageconfirme n'est pas dédiée aux messages on peut y traiter

la variable $_GET['mailOK'] comme ceci :

if(isset($_GET['mailOK']))

    echo "Votre message a été envoyé";

*/
 
$erreur = false;
 
$message = false;
 
$focus = 0;
 
# l'utilisateur a validé le formulaire
 
if (!empty($_POST)) {
 
  # vérification des champs requis (Nom, Message,mail)
 
  if (empty($_POST['Message'])) {
 
    $erreur = "Merci de renseigner le message";
 
    $focus = 1;
 
  }
 
  if (empty($_POST['Nom'])) {
 
    $erreur = "Merci de renseigner votre nom";
 
    $focus = 3;
 
  }
 
  if (empty($_POST['email'])) {
 
    $erreur = "Merci de renseigner votre email";
 
    $focus = 0;
 
  }
 
  # pièce jointe (nouveauté 12.10.2005)
 
  $piecejointe = "";
 
    if(!$erreur && strlen($_FILES['Fichier']['name'])) {
 
      $fichier = $_FILES['Fichier'];
 
      # upload du fichier sur le serveur
 
      $temp = $fichier['tmp_name'];
 
      $name = $fichier['name'];
 
      $size = $fichier['size'];
 
      $destination = $rep.$name;
 
      if($size > $taillemax)
 
        $erreur = "Taille du fichier $name > ".(int)($taillemax/9024)." Ko";
 
        elseif(!@is_uploaded_file($temp))
 
          $erreur = "Téléchargement du fichier $name impossible";
 
            elseif(!@move_uploaded_file($temp, $destination))
 
              $erreur = "Problème de transfert du fichier $name";
 
                if($erreur) $focus = 7;
 
        else {
 
                  # lecture du type de fichier
 
              if(!function_exists('mime_content_type')) {
 
            function mime_content_type($fichier) {
 
              # ajouter autant de combinaisons que souhaitées
 
              $mime = array(
 
                    '.gif' => 'image/gif',
 
            '.jpg' => 'image/jpeg',
 
            '.psd' => 'image/x-xwd',
 
            '.png' => 'image/png',
 
            '.txt' => 'text/plain',
 
            '.doc' => 'application/msword',
 
            '.xls' => 'application/vnd.ms-excel',
 
'.zip' => 'fichier/zip',
 
'.rar' => 'fichier/rar',
 
              );
 
              # par défaut
 
              if(!$type = $mime[strrchr($fichier,'.')]) $type = "application/octet-stream";
 
                return $type;
 
            }
 
        }
 
        $mimetype = mime_content_type($destination);
 
        # lecture et conversion du fichier
 
          if($openf = @fopen($destination, "rb")) {
 
            $fichier = fread($openf, filesize($destination));
 
            @fclose($openf);
 
            # encodage norme RFC 2045
 
            $piecejointe = chunk_split(base64_encode($fichier));
 
            } else {
 
                  $erreur = "Problème de lecture du fichier $name";
 
              $focus = 7;
 
             }
 
        }
 
    }
 
    # pas d'erreur donc on continue
 
    if(!$erreur) {
 
      # traitement du tableau $_POST qui contient les paires name => value
 
      $message_final = 'Bonjour,

Cette info a été envoyée par : '.ucwords($_POST['Nom']).'

Son message : '.stripslashes($_POST['Message']).'

son mail : '.stripslashes($_POST['email']).'

        ';
 
      # formatage du message de confirmation affiché (option)
 
      # conversion des sauts de ligne et des caractères spéciaux
 
      $message = nl2br(htmlentities($message_final));
 
    }
 
    # en-têtes
 
    $headers = "From: ".$from;
 
    if(strlen($email_cc))
 
      $headers .= "\nCC: ".$email_cc;
 
        if(strlen($email_bcc))
 
          $headers .= "\nBCC: ".$email_bcc;
 
          # si pièce jointe on ajoute l'en-tête spécifique avec séparateurs
 
          if(strlen($piecejointe)) {
 
        $boundary = "/-------".md5(uniqid(rand()))."-------/"; // séparateur
 
        $headers .= "\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"$boundary\"\n";
 
        $message_final =
 
          "This is a multi-part message in MIME format.\n--$boundary\n".
 
          "Content-Type: text/plain; charset=utf-8\n".
 
          "Content-Transfer-Encoding: 7bit\n\n".
 
          "$message_final\n\n--$boundary\n".
 
          "Content-Type: $mimetype; name=\"$name\"\n".
 
          "Content-Transfer-Encoding: base64\n".
 
          "Content-Disposition: attachment; filename=\"$name\"\n\n".
 
          "$piecejointe\n--".
 
          $boundary."--\n";
 
          }
 
              # envoi du mail
 
          if (@mail($destinataire, $objets, stripslashes($message_final), $headers)) {
 
        @unlink($destination); // suppression de la pièce jointe
 
        # si la page de redirection est renseignée
 
        if(!empty($pageconfirme)) {
 
          echo"

  <html>

                 <head>

                   <title>Infos Réseau</title>

             </head>

             <body onLoad=\"javascript:alert('Votre info a bien été envoyée');window.location='../pat/index.html'\">

             </body>

               </html>";
 
            }
 
          } else {
 
           echo"<html>

              <head>

                <title>Infos Réseau</title>

              </head>

              <body onLoad=\"javascript:alert('Erreur! Veuillez réessayer');window.location='../pat/index.html'\">

              </body>

            </html>";
 
        }
 
    } else {
 
           echo"<html>

          <head>

            <title>Infos Réseau</title>

          </head>

          <body onLoad=\"javascript:alert('Erreur! Veuillez réessayer ou passer par l'adresse mail : yannick.meunier@hotmail.Com');window.location='../pat/index.html'\">

          </body>

        </html>";
 
    } // if(!$erreur)
 
?>
 
</body>
 
</html>