Salut à tous,
j'ai un petit script pour envoyé un mail avec plusieurs pièces jointes, mais je n'arrive pas a vérifier si mon input file contient au moins un fichier.
je tout tient sur une page qui vérifie les autres champs également
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
 
 
<?php
if(!empty($_POST)){
	extract($_POST);
	$valid =true;
 
	if ($ville=="---"){
		$valid=false;
		$erreurville = "Veuillez selectionner une ville";
	}	
 
	if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$mail_expediteur)){
		$valid= false;
		$erreurmail = "Votre email n'est pas valide";
	}
	if (empty($mail_expediteur)){
		$valid=false;
		$erreurmail = "Veuillez saisir votre email";
	}
	if (empty($nom_expediteur)){
		$valid=false;
		$erreurnom = "Veuillez saisir votre nom";
	}
	if (empty($prenom_expediteur)){
		$valid=false;
		$erreurprenom = "Veuillez saisir votre prénom";
	}
	if (empty($sujet)){
		$valid=false;
		$erreurtitre = "Veuillez saisir un titre";
	}	
 
	if (empty($texte_message)){
		$valid=false;
		$erreurmessage = "Veuillez saisir un message";
	}	
 
// Cela ne fonctionne pas
if ($_FILES['attach']['tmp_name']==""){
		$valid=false;
		$erreurpj= "Veuillez saisir une PJ";
	}
 
	if($valid){
 
 
    if(isset($_FILES) && (bool) $_FILES) {
        $AllowedExtensions = ["pdf","doc","docx","gif","jpeg","jpg","png","rtf","txt"];
        $files = [];
        $server_file = [];
        foreach($_FILES as $name => $file) {
            $file_name = $file["name"];
            $file_temp = $file["tmp_name"];			
 
            foreach($file_name as $key) {
                $path_parts = pathinfo($key);
                $extension = strtolower($path_parts["extension"]);
                if(!in_array($extension, $AllowedExtensions)) { die("Extension de fichier non valide"); }
                $server_file[] = "./{$path_parts["basename"]}";
            }
            for($i = 0; $i<count($file_temp); $i++) { move_uploaded_file($file_temp[$i], $server_file[$i]); }
        }
 
 
 
        $to = "123@gmail.com";
		$nom_expediteur = mb_strtoupper($_POST["nom_expediteur"]);
        $from = "456@free.fr";
        $subject = stripslashes($_POST["sujet"]);
        //$message = $_POST["texte_message"];
	$message = "Mail de l'expéditeur : ".$mail_expediteur."\r\n
	Nom de l'expéditeur : ".$radiociv." ".$nom_expediteur." ".$prenom_expediteur."\r\n\r\n
	La personne ci-dessus vous a contacté(e) à partir de votre site.\r\n
	Si vous désirez lui répondre, il vous suffit de répondre à ce message.\r\n
	Demande concernant un poste à ".$ville." \r\n\r\n
	Voici le contenu de son message :\r\n
	Message : ".$_POST["texte_message"]."";
        $headers = "From: $from";
 
 
 
        $semi_rand = md5(time());
        $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
        $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
        $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"UTF-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
        $message .= "--{$mime_boundary}\n";
        $FfilenameCount = 0;
        for($i = 0; $i<count($server_file); $i++) {
            $afile = fopen($server_file[$i],"rb");
            $data = fread($afile,filesize($server_file[$i]));
            fclose($afile);
            $data = chunk_split(base64_encode($data));
            $name = $file_name[$i];
            $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$name\"\n" .
                "Content-Disposition: attachment;\n" . " filename=\"$name\"\n" .
                "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
            $message .= "--{$mime_boundary}\n";
        }
        if(mail($to, $subject, $message, $headers)) {
            echo "<p>mail envoyé à $to!</p>";
        } else {
            echo "<p>le mail n'a pas pu etre envoyé !</p>";
        }
    }
?>
<form method="post" action="recru.php" enctype="multipart/form-data">
				<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
				<div class="form-group">
					<h4 class="color5"><i class="icon-arrow-right6"> </i>  Votre Nom<span class="text-danger">*</span> :</h4>
					<div class="input-group col-sm-12">
					<input class="form-control" type="text" placeholder="Nom" name="nom_expediteur" id="nom_expediteur" value="<?php
					if (!empty($_POST["nom_expediteur"])){echo htmlspecialchars($_POST["nom_expediteur"],ENT_QUOTES);}
					?>" style="text-transform:uppercase" />
					</div>
					<?php if(isset($erreurnom)){ echo '<span class="label label-danger"><i class="icon-cross"> </i> '.$erreurnom.'</span>'; }?>
				</div>
				</div>				
 
                                   .../....
 
				<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
				<div class="form-group">				
					<h4><i class="icon-arrow-right6"> </i> Message <span class="text-danger">*</span> :</h4>
					<textarea class="form-control" rows="10" placeholder="Message" name="texte_message" id="texte_message" onFocus="this.value='' "><?php
					if (isset($_POST["texte_message"])){echo htmlspecialchars($_POST["texte_message"],ENT_QUOTES);}
					?></textarea>
					<?php if(isset($erreurmessage)){ echo  '<span class="label label-danger"><i class="icon-cross"> </i> '.$erreurmessage.'</span>'; }?>
				</div>
				</div>
 
				<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">				
				<div class="form-group">
					<h4><i class="icon-arrow-right6"> </i>  Pièce(s) jointe(s) à votre message (CV, lettre...) :<br />
					<small> Formats acceptés : doc, docx ou pdf</small></h4>
					<div class="input-group col-sm-12">
					<input type="file" name="attach[]" multiple/>
					</div>
					<?php if(isset($erreurpj)){ echo '<span class="label label-danger"><i class="icon-cross"> </i> '.$erreurpj.'</span>'; }?>
				</div>	
				</div>
 
				<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">		
				<p style="font-size:10px" class="text-danger">* Champs obligatoires</p>
					<div class="col-xs-6 col-sm-6 text-left">
					<input class="btn btn-custom" type="submit" name="envoi_message" id="submit_btn"  value="Envoyer" />
					</div>
					<div class="col-xs-6 col-sm-6 text-right">					
					<input class="btn btn-default " type="reset" value="Effacer" />
					</div>
				</div>
 
 
				</form>
je ne vois pas comment vérifier si ce champs contient au moins une pièce jointe.
Merci d'avance de votre aide

Cdt