formulaire PHP avec plusieurs pièces jointes

Eléphanteau du PHP | 28 Messages

28 mars 2022, 14:10

Bonjour,
Je dois apporter quelques modifications à mon formulaire pour y ajouter des pièces jointes que le client pourra nous envoyer et également que le client puisse recevoir une copie de l'email.
Malgré toutes mes recherches, je ne suis guère avancé.
J'utilise la fonction mail(), j'ai entendu qu'avec des bibliothèque PHP cela sera plus facile sauf que je ne sais pas comment ensuite, je pourrais l'intégrer car ce formulaire est sur un WordPress.
Si quelqu'un pourrais m'éclairer davantage?
<?php
if(!empty($_POST))
{
    echo '<pre>'; print_r($_POST); echo '</pre>';
	$boundary = md5(rand()); // clé aléatoire de limite
     
    // entête email
    $headers  = 'MIME-Version: 1.0' . "\n";
    $headers .= 'Content-type: multipart/mixed;boundary='.$boundary.'; charset=UTF-8'."\n";
    $headers .= 'Reply-To: [email protected]'."\n";
    $headers .= 'From: "' . ucfirst(substr($_POST['email'], 0, strpos($_POST['email'], '@'))) . '"<'.$_POST['email'].'>' . "\n";
    $headers .= 'Delivered-to: [email protected]' . "\n";

	$message ="Objet : FILIATION – Commande KIT "."<br><br>". "Nom : " . $_POST['nom'] ."<br>". "Prénom : " . $_POST['prenom'] ."<br>"."Numéro d'identification : " . $_POST['identitficateur']."<br><br>"."Rue : " . $_POST['street'] ."<br>"."Code postal : " . $_POST['postal'] ."<br>"."Ville : " . $_POST['city'] ."<br>"."Email : " . $_POST['email'] ."<br>"."Téléphone portable : " . $_POST['phone'] ."<br>"."Téléphone fixe: " . $_POST['tel']."<br><br>"."Nombre de kits : "."<strong>". $_POST['number-kits']."</strong>"."<br><em>(1 Kit contient 1 sachet étanche, 1 rack compartimenté, 1 planche de 5 étiquettes)</em><br>"."<br>". "Nombres de tubes et aiguilles : "."<strong>". $_POST['number-aiguilles'] ."</strong>"."<br><em>(1 tube = aiguille)</em><br>"."<br>". "Nombres d'adaptateur : "."<strong>" . $_POST['number-adaptateur']."</strong>" ."<br><br>". "Petit carton + étiquette Chronopost Retour : "."<strong>" . $_POST['number-small'] ."</strong>"."<br><br>". "Grand carton + étiquette Chronopost retour : "."<strong>" . $_POST['number-big']."</strong>" ."<br><br>"."Commentaire : "."<br><strong>". $_POST['message']."</strong><br>" ;
    
    mail("[email protected]", "Objet : FILIATION – Commande KIT ", $message, $headers); 
	header("location:form-merci.php");
} 
   

?>
<body>
	<div class="contact container">
		<div class="row  mt-4 ">
		<div class="col-12  text-center bg-light ">
			<h1>Commande de kits génomique</h1>
	
		<form method="post" action="" enctype="multipart/form-data">
	
			<div class="form-row justify-content-center bg-light py-5">
				<div class="form-group col-lg-3">
					<label for="identity-number">Identificateur</label>
					<input type="text" class="form-control" id="identitficateur" name="identitficateur" required/>
					<div class="invalid-feedback">
						Numéro inconnu
					</div>
					<div class="valid-feedback">
						Numéro reconnu
					</div>
				</div>
			
			
				<div class="form-group col-lg-5">
					<label for="email">Email</label>
					<input type="email" class="form-control" id="email" name="email"  required/>
				</div>
				<div class="form-group col-lg-5">
					<label for="nom">Nom</label>
					<input type="text" disabled="disabled" class="form-control" id="nom" name="nom"  required>
				</div>
				<div class="form-group col-lg-5">
					<label for="prenom">Prénom</label>
					<input type="text" disabled="disabled" class="form-control" id="prenom" name="prenom" required>
				</div>

				<div class="form-group col-lg-10">
					<label for="street">Rue</label>
					<input type="text" disabled="disabled" class="form-control" id="street" name="street"  required/>
				</div>

				<div class="form-group col-lg-5">
					<label for="postal">Code Postal</label>
					<input type="text"disabled="disabled" class="form-control" id="postal" name="postal"maxlength="5" pattern="[0-9]{5}" title="5 chiffres"   required/>
				</div>

				<div class="form-group col-lg-5">
					<label for="city">Ville</label>
					<input type="text"disabled="disabled" class="form-control" id="city" name="city"  required/>
				</div>

				<div class="form-group col-lg-5">
					<label for="phone">Teléphone Portable</label>
					<input type="text" disabled="disabled" class="form-control" id="phone" name="phone"  pattern="[0-9]{10}" required/>
				</div>
				<div class="form-group col-lg-5">
					<label for="tel">Téléphone Fixe</label>
					<input type="text" disabled="disabled" class="form-control" id="tel" name="tel"  pattern="[0-9]{10}" />
				</div>
				<div class="form-group col-lg-3">
					<label for="kit">Kits </label><br>
					<!-- <input type="number" disabled="disabled" class="form-control" id="kit" name="kit" required/> -->
					<select name="number-kits" id="number-kits"  disabled="disabled" required>
						<option value=""></option>
						<option value="0">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
						<option value="6">6</option>
						<option value="7">7</option>
						<option value="8">8</option>
						<option value="9">9</option>
						<option value="10">10</option>
						<option value="20">20</option>
						<option value="50">50</option>
						<option value="100">100</option>
						<option value="150">150</option>
						<option value="200">200</option>
					</select>
				</div>
				<div class="form-group col-lg-2">
					<label for="aiguilles">Tubes et Aiguilles</label><br>
					<!-- <input type="number" disabled="disabled" class="form-control" id="aiguilles" name="aiguilles" required/> -->
					<select name="number-aiguilles" id="number-aiguilles"  disabled="disabled">
						<option value="0">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
						<option value="6">6</option>
						<option value="7">7</option>
						<option value="8">8</option>
						<option value="9">9</option>
						<option value="10">10</option>
						<option value="20">20</option>
						<option value="50">50</option>
						<option value="100">100</option>
						<option value="150">150</option>
						<option value="200">200</option>
					
					</select>
				</div>
				<div class="form-group col-lg-2">
					<label for="adaptateur">Adaptateur</label><br>
					<!-- <input type="number"disabled="disabled" class="form-control" id="adaptateur" name="adaptateur" required/> -->
					<select name="number-adaptateur" id="number-adaptateur"  disabled="disabled">
						<option value="0">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
					
					</select>
				</div>
				<div class="form-group col-lg-2">
				<label for="small-box">Petit carton + étiquette retour</label><br>
					<!-- <input type="number" disabled="disabled" class="form-control" id="small-box" name="small-box" required/> -->
					<select name="number-small" id="number-small"  disabled="disabled">
						<option value="0">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						
					</select>
				</div>
				<div class="form-group col-lg-3">
					<label for="big-box">Grand carton + étiquette retour</label><br>
					<!-- <input type="number" disabled="disabled" class="form-control" id="big-box" name="big-box"required/> -->
					<select name="number-big" id="number-big"  disabled="disabled">
						<option value="0">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
					
					</select>
				</div>
				<div class="form-group col-lg-10">
				<label>Vos commentaires</label>
				<textarea class="form-control" disabled="disabled" id="message" rows="3" name="message" ></textarea>
				</div>
				<div class="form-group col-lg-10">
				<label> Pièce jointe </label>
				<input type="file" name="fichier" id="fichier" multiple>
				</div>
				<div class="form-group col-lg-10 "style="display:flex">
				<div class="form-group col-lg-1 ">
						<input type="checkbox" class="form-control" id="rgpd" name="rgpd"  required/>
				</div>
				<div class="form-group col-lg-8 ">
					<label for="rgpd"class="rgpd"> En cochant cette case, j’accepte <a href="https://www.laboratoire-labeo.fr/fr/politique-de-confidentialite/">la Politique de confidentialité </a>de ce site </label>
				</div>
				</div>
				<input type="submit" disabled="disabled" name="valider" id="valider" value="Valider" class="form-control btn btn-light text-dark"/>
			</div>
		</form>			  
	</div>
</body>					

Mammouth du PHP | 2703 Messages

28 mars 2022, 14:21


Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

29 mars 2022, 10:57

Si ce formulaire est dans un Wordpress, tu pourrais peut être utilisée l'un des modules Wordpress qui permet de créer des formulaires facilement :
https://www.blogduwebdesign.com/plugins ... wordpress/
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

27 avr. 2022, 09:22

je n'ai pas utilisé de plugin car je devais le relié à une api soap et je ne savais pas comment le relié à celui-ci d'où pourquoi je l'ai codé en dur
voilà une solution qui marche :-)

Code : Tout sélectionner

if(isset($_POST['identitficateur'])&&isset($_POST['valider'])){ $boundary=md5(uniqid(microtime(),TRUE)); $headers="MIME-Version: 1.0"."\r\n"; $headers.="Content-type:multipart/mixed;boundary=".$boundary."\r\n"; $headers.='From: "'.ucfirst(substr($_POST['nom'], 0, strpos($_POST['email'], '@'))).'"<'.$_POST['email'].'>'."\r\n"; $headers.='Cc: '.$_POST['email']."\r\n"; $to='[email protected]'; $object="FILIATION - Commande KIT"; $message='--'.$boundary."\r\n"; $message.='Content-type:text/html;charset=utf-8'."\r\n\r\n"; $message.="FILIATION - Commande KIT "."<br><br>". "Nom : " . $_POST['nom'] ."<br>". "Prénom : " . $_POST['prenom'] ."<br>"."Numéro d'identification : " . $_POST['identitficateur']."<br><br>"."Adresse : " . $_POST['street'] ."<br>"."Complément adresse : " . $_POST['street2'] ."<br>"."Code postal : " . $_POST['postal'] ."<br>"."Ville : " . $_POST['city'] ."<br>"."Email : " . $_POST['email'] ."<br>"."Téléphone portable : " . $_POST['phone'] ."<br>"."Téléphone fixe: " . $_POST['tel']."<br><br>"."Nombre de kits : "."<strong>". $_POST['number-kits']."</strong>"."<br><em>(1 Kit contient 1 sachet étanche, 1 buvard, 1 planche de 5 étiquettes)</em><br>"."<br>". "Nombres aiguilles : "."<strong>". $_POST['number-aiguilles'] ."</strong><br><br>"."Nombre de tubes : "."<strong>". $_POST['number-tubes']."</strong><br><br>". "Nombres d'adaptateur : "."<strong>" . $_POST['number-adaptateur']."</strong><br><br>". "Petit carton : "."<strong>" . $_POST['number-small'] ."</strong><br>". "Grand carton : "."<strong>" . $_POST['number-big']."</strong>" ."<br>"."Enveloppe à bulles: "."<strong>" . $_POST['number-enveloppe']."</strong>" ."<br><br>"."Etiquette Chronopost retour: "."<strong>" . $_POST['number-chronospost']."</strong>" ."<br><br>"."Commentaire : "."<br><strong>". $_POST['message']."</strong><br><br><br>"."RGPD : " . $_POST['rgpd'] ."<br>"."\r\n"; $files=$_FILES['files']; for($i=0;$i<count($_FILES['files']['name']);$i++){ if($files['type'][$i]=='application/pdf'){ $f=fopen($files['tmp_name'][$i],'r') or die('Cant open File'.$files['name'][$i]); $content=fread($f,$files['size'][$i]); $content=chunk_split(base64_encode($content)); fclose($f); $message.='--'.$boundary."\r\n"; $message.="Content-type:".$files['type'][$i].";name=".$files['name'][$i]."\r\n"; $message.="Content-Disposition: attachment;filename=".$files['name'][$i]."\r\n"; $message.="Content-transfer-encoding:base64"."\r\n\r\n"; $message.=$content."\r\n"; } } $message.='--'.$boundary."--"; //echo '<pre>';var_dump($_FILES);echo '</pre>'; $mail=mail($to,$object,$message,$headers);?>

Avatar du membre
Mammouth du PHP | 1564 Messages

27 avr. 2022, 12:14