[résolu]Ajouter un Pièce Jointe a mon Formulaire

Bonjour,

j’ai un formulaire HTML qui contient des champs :

  • nom,
  • email
  • message
<input type="text" name="nom"  value="NOM" border="0" style="width:150px">

Mon formulaire lorqu’il est validé fait appel a un fichier php

<form name="contact" method="post" action="contactok.php" >

Mon formulaire contacok contient le code suivant :


 <?
	
	// ADRESSE DU DESTINATAIRE
	$to="contact@contac.com";

//
	
	// SUJET DU MESSAGE
	$sujet=".Message.";

	// ENTETES
	$entetes="From:$nom $prenom<$mail>\r\n";
	
	// MESSAGE
	$msg.="\nNom : $nom\n";
	$msg.="E mail : $mail\n";
	$msg.="\nMessage :\n\n$message";
	
	$msg = stripslashes($msg); 

	if (mail($to,$sujet,$msg,$entetes))
	{
	
	?>
      <p align="center" class="Style1"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Votre message 
        a bien &eacute;t&eacute; envoy&eacute;.<br>
        <br>
        </font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A bient&ocirc;t.
        <?
	}
	else
	{
	?>
        <!--<p> </p>-->
        </font> </p>
      <p align="center" class="Style1"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Erreur !<br>
        Nous  vous invitons &agrave; resaisir votre message ult&eacute;rieurement .<br>
        Toutes nos excuses pour cet incident technique.</font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font></p> 
      <?
	}
	?>

Voici ma question… Est il possible de rajouter un champ permettant d’envoyer une pièce jointe ??
Si oui que dois je ajouter ?

Merci d’écalairer ma lanterne

Essaye <input type="file" … />

Il doit aussi y avoir d’autres contraintes au niveau du tag form.

le <input type=“file” … /> marche en effet, mais le soucis c’est comment le gérer en php…

j’ai est champ permettant de choisir son fichier mais comment faire pour l’envoyer ??.. :neutre:

Si je me trompe pas, tu récupères les fichiers dans $_FILES, et il faut ensuite les déplacer avec la fonction move_uploaded_file.

Par contre je te demanderai de mettre le langage dans le titre.

le form doit contenir enctype="multipart/data"

aïe aïe aïe… j’vais bien finir par la trouver ma solution ^^…
ça doit po etre bien compliqué … :slight_smile:

bon alors j’ai réussi mais j’ai encore un soucis…
Voici mon code…

J’ai modifié mon code en ajoutant dans la balise Form :

<form name="contact" method="post" action="contactok.php" enctype="multipart/form-data">

et un champ :

<input type=file size=40 name="attach">

Dans mon Script PHP, j’ai ajouter :


if (is_uploaded_file($attach)) {
    $file = fopen($attach, "r");
    $contents = fread($file, $attach_size);
    $encoded_attach = chunk_split(base64_encode($contents));
    fclose($file);

   $entetes.= "MIME-version: 1.0\n";
   $entetes.= "Content-type: multipart/mixed; ";
   $entetes.= "boundary=\"Message-Boundary\"\n";
   $entetes.= "Content-transfer-encoding: 7BIT\n";

    $body_top = "--Message-Boundary\n";
    $body_top .= "Content-type: text/plain; charset=US-ASCII\n";
    $body_top .= "Content-transfer-encoding: 7BIT\n";
    $body_top .= "Content-description: Mail message body\n\n";

    $msg .= "\n\n--Message-Boundary\n";
    $msg .= "Content-type: $attach_type; name=\"$attach_name\"\n";
    $msg .= "Content-Transfer-Encoding: BASE64\n";
    $msg .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
    $msg .= "$encoded_attach\n";
    $msg .= "--Message-Boundary--\n";
  }
	
	$msg = stripslashes($msg); 

	if (mail($to,$sujet,$msg,$entetes))
	{
	
	?>
        <p align="center" class="Style1"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Votre message a bien &eacute;t&eacute; envoy&eacute;.<br>
    </font></p>
        <p align="center" class="Style1"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A bient&ocirc;t.
              <?
	}
	else
	{
	?>
              <!--<p> </p>-->
        </font> </p>
        <p align="center" class="Style1"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Erreur !<br>
  Erreur</font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font></p>
        <?
	}
	?>

L’envoi de la pièce jointe marche parfaitement… mais… le message envoyé par le formulaire ne passe plus :??:

Quelqu’un peut il me dire ou est l’erreur ??? Merci…

c bon j’ai trouvé…

$msg = $body_top.stripslashes($msg);

merci encore ^^