Aide formulaire php pièce jointe

Résolu/Fermé
azerto00
Messages postés
12
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
3 octobre 2010
- 5 mars 2009 à 12:19
azerto00
Messages postés
12
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
3 octobre 2010
- 8 mars 2009 à 22:56
Bonjour,
J'ai récement trouver un formulaire avec envoi de pièce jointe qui fonctionne, je voudrais maintenant le perfectionner en proposant l'envoi de 5 pièce jointe sauf que .... je sais pas ce qu'il faut rajouter en php , je connais le php mais pas du tout les expressions pour ce qui est traitement d'un fichier.

Voila ma page index.htm qui contient le formulaire html :
<form name="contact" method="post" action="contactok.php" enctype="multipart/form-data">
Nom :<input type="text" name="nom" size="20"></p>
  <p>Email<input type="text" name="mail" size="20"></p>
  <p>Message<input type="text" name="message" size="20"></p>

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

  <p>&nbsp;</p>
  <p><input type="submit" value="Submit" name="B1"><input type="reset" value="Reset" name="B2"></p>
</form>


ET maintenant la page php qui traite les informations :

<?
	
	// ADRESSE DU DESTINATAIRE
	$to="xxxxxx@gmail.com";

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

	// ENTETES
	$entetes="From:$nom $prenom<info@coco-photocop.fr>\r\n";
	
	// MESSAGE
	$msg.="\nNom : $nom\n";
	$msg.="E mail : $mail\n";
	$msg.="\nMessage :\n\n$message";
	
	$msg = stripslashes($msg); 
	
	
	
	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 = $body_top.stripslashes($msg);	

	if (mail($to,$sujet,$msg,$entetes))
	{


Voila je sais pas comment traiter le 2eme fichier <input type=file size=40 name="attach2">

2 réponses

azerto00
Messages postés
12
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
3 octobre 2010
1
8 mars 2009 à 22:56
UP! avec modification car une partie de la réponse trouvé ...
Bonjour, j'ai un code php trouvé sur internet que je souhaiterai améliorer.
Pour comprendre, je cherche à faire un formulaire avec envoi de plusieurs pièces jointe.
LE code marche pour l'envoi d'un fichier, (si c'est une image elle est incorporé dans le coprs du message)
Je souhaite ajouter la possibilité d'envoyer une 2eme pièce jointe.

Il doit y avoir une erreur de syntaxe car la 1ere pièce jointe est inclus dans le mail que je recoi mais la seconde c'est comme si elle existait pas ....


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

$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";

}

if (is_uploaded_file($attach2)) {
$file2 = fopen($attach2, "r");
$contents2 = fread($file2, $attach2_size);
$encoded_attach2 = chunk_split(base64_encode($contents2));
fclose($file2);

$msg .= "\n\n--Message-Boundary\n"; //
$msg .= "Content-type: $attach2_type; name=\"$attach2_name\"\n";
$msg .= "Content-Transfer-Encoding: BASE64\n";
$msg .= "Content-disposition: attachment; filename=\"$attach2_name\"\n\n";
$msg .= "$encoded_attach2\n";
$msg .= "--Message-Boundary--\n";

}

JE pense que je avez compris que les 2 input file sont nommées :
- attach
- attach2
Merci d'avance !
1
azerto00
Messages postés
12
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
3 octobre 2010
1
6 mars 2009 à 14:05
up
0