formulaire de contact php avec pièces jointes

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par cybereco, 9 Août 2014.

  1. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    Bonjour,

    Avec le code ci-après d'un formulaire de contact php, la pièce jointe n'est pas transférée avec le reste du mail.

    Un peu d'aide me serait bien utile.
    Merci

    Code:
    <?php
    
    // Initialise les variables
    $erreur = NULL;
    $info = NULL;
    
    if(!empty($_POST)){
    
    	extract($_POST);
    	$valid=true;
    	if($adresse!=""){
    	}
    	else{}
    	if(empty($nom)){
    		$valid=false;
    		$erreurnom="Vous n'avez pas indiqué votre nom";
    }
    
    	if(empty($prenom)){
    		$valid=false;
    		$erreurprenom="Vous n'avez pas indiqué votre prénom";
    }
    
    if(empty($email)){
    		$valid=false;
    		$erreuremail="Vous n'avez pas indiqué votre adresse email";
    }
    
    if(empty($objet)){
    		$valid=false;
    		$erreurobjet="Vous n'avez pas indiqué l'objet de votre message";
    }
    
    if(empty($message)){
    		$valid=false;
    		$erreurmessage="Vous n'avez pas indiqué votre message";
    }
    	
    	 if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email)){
    		
    		$nom = htmlentities(addslashes($nom));
    		
    		$email = htmlentities(addslashes($email));
    		$message = htmlentities(addslashes($message));
    		$message = 'Nom : '.$nom.' Prenom : '.$prenom.' '."\n".' Email : '.$email.' '."\n".' Message : '.$message.'';
    		$sujet = 'Objet: '.$objet.'';
    		$destinataire = "contact@monsite.fr";
    		
    		$boundary = "_".md5 (uniqid (rand())); 
    
      		$attached_file = file_get_contents($file_name); //file name ie: ./image.jpg 
     	    $attached_file = chunk_split(base64_encode($attached_file)); 
    
     		$attached = "\n\n". "--" .$boundary . "\nContent-Type: application; name=\"$file_name\"\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"$file_name\"\r\n\n"				.$attached_file . "--" . $boundary . "--"; 
      
      $headers = "MIME-Version: 1.0\r\n";
      $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
    		
    		$headers .="From: $prenom $nom <$email>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";
    		$body = "--". $boundary ."\nContent-Type: text/plain; charset=ISO-8859-1\r\n\n".$message . $attached;
    		
    		$message = stripslashes($message);
    		$nom = stripslashes($nom);
    		if(mail($destinataire,$sujet,$message,$headers));
    		
    		$info = 'Votre message à été envoyé';
    		
    		
    		
    		unset($_POST);
    		unset($message);
    		unset($objet);
    		unset($email);
    		unset($nom);
    		unset($prenom);
    	
    	}
    	else{
    		$erreur = 'Votre adresse email est invalide';
    	}
    
    
    }
    else {
    	$erreur = 'Veuillez remplir tous les champs obligatoires *';
    	
    }
    ?>
    <!DOCTYPE html>
    <!--[if lt IE 9]><html lang="fr-FR" class="oldie"><![endif]-->
    <!--[if (gte IE 9) | !(IE)]><!--><html lang="fr-FR" class="modern"><!--<![endif]-->
    <head>
    <meta charset="iso-8859-1" />
    </head>
      <form method="post" id="formulaire_contact" target="">
    		
    		<fieldset>
    		<h2> Formulaire de contact</h2>
            <span style="color:red"> <?php echo $erreur; ?></span><span style="color:green"> <?php echo $info; ?></span><br><br>
    		<label for="pseudo">Votre Nom* : <span style="color:red" id="error-message"><?php if(isset($erreurnom)) echo $erreurnom;?></span> </label><input type="text" name="nom" id="nom" size="43" maxlength="50" value="<?php if(isset($nom)) echo $nom; ?>"/><br/>
    		<label for="pseudo">Votre Prenom* : <span style="color:red" id="error-message"><?php if(isset($erreurprenom)) echo $erreurprenom;?></span></label><input type="text" name="prenom" id="prenom" size="43" maxlength="50" value="<?php if(isset($prenom)) echo $prenom; ?>"/><br/>
            
            <input type="text" name="adresse" id="adresse"/>
            
    		<label for="email">Email* : <span style="color:red" id="error-email"><?php if(isset($erreuremail)) echo $erreuremail;?></span></label><input type="text" name="email" id="email" size="43" maxlength="50" value="<?php if(isset($email)) echo $email; ?>"/><br/>
    		<label for="site">Objet* : <span style="color:red" id="error-message"><?php if(isset($erreurobjet)) echo $erreurobjet;?></span></label><input type="text" name="objet" id="objet" size="43" maxlength="50" value="<?php if(isset($objet)) echo $objet; ?>" /><br/>
    		<label for="message">Message* : <span style="color:red" id="error-message"><?php if(isset($erreurmessage)) echo $erreurmessage;?></span></label><textarea name="message" id="message" cols="60" rows="10"  ><?php if(isset($message)) echo $message; ?></textarea><br/><br/>
    		
                      <label for="fichier"><strong>Pièce Jointe:</strong></label>
                      <span class="small">(<span style="color: #FC0000; font-size: 10px;">max. 1MB</span>)</span></td>
                      <td>
                       <input type="hidden" name="max_file_size" value="2097152" />
    			       <input type="file" name="datei" size="32" maxlength="500" class="eingabe" />
    				  </td>
                    <br><br>
    		<input type="submit" value="Envoyer"/>
            
            <input type="text" name="adresse" id="adresse"/>
            
    		</fieldset>
    		</form>
            
             </div>  
             </body>
    </html>     
     
  2. kategriss
    kategriss Nouveau WRInaute
    Inscrit:
    5 Septembre 2010
    Messages:
    33
    J'aime reçus:
    0
  3. baud74
    baud74 WRInaute impliqué
    Inscrit:
    21 Juillet 2014
    Messages:
    586
    J'aime reçus:
    0
    le nom du fichier joint se trouve dans $datei, hors c'est $file_name qui est utilisé.
     
  4. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 905
    J'aime reçus:
    75
    Pourquoi s'embêter à constituer soi-même les entêtes du mail, au risque de faire des erreurs, alors qu'il y a des classes particulièrement efficaces pour ça ?

    https://github.com/PHPMailer/PHPMailer
     
  5. cybereco
    cybereco Nouveau WRInaute
    Inscrit:
    19 Août 2011
    Messages:
    32
    J'aime reçus:
    0
    J'ai renommé $datei par $file_name, mais sans plus de succès pour le moment...
     
Chargement...
Similar Threads - contact php pièces Forum Date
formulaire de contact sans php Développement d'un site Web ou d'une appli mobile 5 Avril 2020
ReCaptcha v2 – depuis 3mois, du spam russe via un formulaire de contact pour un seul de mes sites Google : l'entreprise, les sites web, les services 26 Novembre 2020
Quel recours contre le plagiat ? contacter Google ou autre ? Débuter en référencement 6 Novembre 2020
Site web : page contact nécessaire ? Administration d'un site Web 21 Juillet 2020
Impact liens multiples vers la page contact dans un article Débuter en référencement 20 Novembre 2019
Résultats issus de Google Contacts et autres Référencement Google 3 Septembre 2019
WordPress Comment faire un tracking des demandes sur un formulaire contact form 7 ? Google Analytics 2 Juillet 2019
Importer ses contacts Gmail dans Twitter (invitations) Twitter 21 Mars 2019
Fin export email contact (Linkedin) Autres réseaux sociaux 24 Novembre 2018
Spam de message de contact Administration d'un site Web 8 Juin 2018