Plusieurs input file, form php

Résolu/Fermé
oxymore64 Messages postés 34 Date d'inscription samedi 23 avril 2011 Statut Membre Dernière intervention 16 juin 2012 - 27 sept. 2011 à 15:27
oxymore64 Messages postés 34 Date d'inscription samedi 23 avril 2011 Statut Membre Dernière intervention 16 juin 2012 - 1 oct. 2011 à 13:51
Bonjour,

J'ai un formulaire qui fonctionne très bien. Cependant, j'ai ajouté deux input file mais les fichiers qui y sont "uploadé" ne sont pas envoyés. Quand je le teste je ne reçois sur ma boîte mail que le fichier du premier champ.

Pourriez-vous m'aider ?

Merci d'avance.

Mon form
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form2" id="form2">



Le traitement

//ON VA GENERER UNE VARIABLE DU NOM DE LA VARIABLE POST
	foreach ( $_POST as $post => $val )
	{           
        $$post = $val;
    }
	if (empty($data))
		$data = '';
	if (empty($humain))
		$erreur_humain = '<span class="red","textareaMaxCharsMsg">Champ obligatoire</span>';
	if (empty($nom))
		$erreur_nom = '<span class="red","textfieldRequiredMsg">Champ obligatoire</span></span>';
	if (empty($prenom))
		$erreur_prenom = '<span class="red","textfieldRequiredMsg">Champ obligatoire</span></span>';
	if (empty($styletexte2))
		$erreur_styletexte2 = '<span class="red","textfieldRequiredMsg">Champ obligatoire</span></span>';
	if (empty($delai))
		$erreur_delai = '<span class="red","textfieldRequiredMsg">Champ obligatoire</span></span>';
	if (empty($combi_langues))
		$erreur_combi_langues = '<span class="red","textfieldRequiredMsg">Champ obligatoire</span></span>';
	if (empty($mail))
		$erreur_mail = '<span class="red","textfieldRequiredMsg">Champ obligatoire</span>';
	if ((!empty($mail)) && (!preg_match("!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!",$mail)))
		$erreur_format_mail = '<span class="red","textfieldInvalidFormatMsg">Format non valide</span>';
	if (empty($message))
		$erreur_message = '<span class="red","textareaRequiredMsg"><br/>Champ obligatoire</span>';
	if ((!empty($message)) && (strlen($message) > $taille_msg))
		$erreur_taille_message = '<span class="red","textareaMaxCharsMsg"><br/>Le nombre maximum de caractères a été dépassé.</span>';
	if ($_FILES['parcourir']['size'] > $taille_fichier)
		$erreur_taille_fichier = '<span class="red","textareaRequiredMsg">Fichier trop volumineux</span>';
	$extension_auth = strtolower(strrchr($_FILES['parcourir']['name'], "."));
	if((!empty($_FILES['parcourir']['name'])) && (!in_array($extension_auth, $autorisation_ext)))
		$erreur_type_fichier = '<span class="red","textareaRequiredMsg">Format de fichier non accepté</span>';
	if((!empty($_FILES['parcourir']['name'])) && ($_FILES['parcourir']['error'] > 0))
		$erreur_transfert_fichier = '<span class="red","textareaRequiredMsg">Erreur durant le transfert du fichier</span>';
	if ($_FILES['parcourir2']['size'] > $taille_fichier)
		$erreur_taille_fichier = '<span class="red","textareaRequiredMsg">Fichier trop volumineux</span>';
	$extension_auth = strtolower(strrchr($_FILES['parcourir2']['name'], "."));
	if((!empty($_FILES['parcourir2']['name'])) && (!in_array($extension_auth, $autorisation_ext)))
		$erreur_type_fichier = '<span class="red","textareaRequiredMsg">Format de fichier non accepté</span>';
	if((!empty($_FILES['parcourir2']['name'])) && ($_FILES['parcourir2']['error'] > 0))
		$erreur_transfert_fichier = '<span class="red","textareaRequiredMsg">Erreur durant le transfert du fichier</span>';
		if ($_FILES['parcourir3']['size'] > $taille_fichier)
		$erreur_taille_fichier = '<span class="red","textareaRequiredMsg">Fichier trop volumineux</span>';
	$extension_auth = strtolower(strrchr($_FILES['parcourir3']['name'], "."));
	if((!empty($_FILES['parcourir3']['name'])) && (!in_array($extension_auth, $autorisation_ext)))
		$erreur_type_fichier = '<span class="red","textareaRequiredMsg">Format de fichier non accepté</span>';
	if((!empty($_FILES['parcourir3']['name'])) && ($_FILES['parcourir3']['error'] > 0))
		$erreur_transfert_fichier = '<span class="red","textareaRequiredMsg">Erreur durant le transfert du fichier</span>';
	if ((empty($erreur_nom)) && (empty($erreur_mail)) &&(empty($erreur_format_mail)) && (empty($erreur_message)) && (empty($erreur_taille_fichier)) && (empty($erreur_type_fichier)) && (empty($erreur_humain)) && (empty($robot)))
	{
		$mail_ok = 1;
  		$from = stripslashes($civilite.' '.$nom)."<".stripslashes($mail).">";
   		$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

		$tmp_name = $_FILES['parcourir']['tmp_name'];
		$type = $_FILES['parcourir']['type'];
		$name = $_FILES['parcourir']['name'];
		$size = $_FILES['parcourir']['size'];
		
		$tmp_name2 = $_FILES['parcourir2']['tmp_name'];
		$type2 = $_FILES['parcourir2']['type'];
		$name2 = $_FILES['parcourir2']['name'];
		$size2 = $_FILES['parcourir2']['size'];
		
		$tmp_name3 = $_FILES['parcourir3']['tmp_name'];
		$type3 = $_FILES['parcourir3']['type'];
		$name3 = $_FILES['parcourir3']['name'];
		$size3 = $_FILES['parcourir3']['size'];

		// Message
		$msg_texte = "Nom : $nom\n\n";
		$msg_texte .= "Prenom : $prenom\n\n";
		$msg_texte .= "Civilite : $civilite\n\n";
		$msg_texte .= "Societe : $societe\n\n";
		$msg_texte .= "Mél. : $mail\n\n";
		$msg_texte .= "Type de traduction : $styletexte2\n\n";
		$msg_texte .= "Nombre de mots : $nombre_de_mots\n\n";
		$msg_texte .= "Delai : $delai\n\n";
		$msg_texte .= "Langue : $combi_langues\n\n";
		$msg_texte .= "Methode de connnaissance du site : $decouverte\n\n";
		$msg_texte .= "Message :\n\n";
		$msg_texte .= $message;

		if(is_uploaded_file($tmp_name))
		{
			$file = fopen($tmp_name,'rb');
			$data = fread($file,filesize($tmp_name));
			fclose($file);
			$data = chunk_split(base64_encode($data));
		}
		
		$headers = "From: $from\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\"";
		$msg = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $msg_texte . "\n\n";
		$msg .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" . " name=\"{$name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n";

		// Function mail()
		mail($destinataire, $sujet_mail, $msg, $headers);
		echo 'Nous avons bien pris en compte votre demande. Nous vous répondrons dans les meilleurs délais.<br/><br/><br/>
		Vous allez maintenant être redirigé(e) vers la page d\'accueil.';
		echo '<meta http-equiv="Refresh" content="5; URL='.$url.'">';
	}
}
//ON AFFICHE LE FORMULAIRE UNIQUEMENT SI IL N'A PAS ETE VALIDE
if(!isset($mail_ok))
{
?>


Et les inputs

<td colspan="3"><input name="parcourir" type="file" id="parcourir" value="Parcourir" alt="Parcourir" title="La taille du fichier ne doit pas excéder 25 Mo. Dans le cas contraire, veuillez contacter nos services."/>
          <?php

//ON AFFICHE LES ERREURS DE FICHIERS (TAILLE / FORMAT)
if (isset($erreur_type_fichier))
	echo $erreur_type_fichier;
if (isset($erreur_taille_fichier))
	echo $erreur_taille_fichier;
if (isset($erreur_transfert_fichier))
	echo $erreur_transfert_fichier;	
?>
<input name="parcourir2" type="file" id="parcourir2" value="Parcourir" alt="Parcourir" title="La taille du fichier ne doit pas excéder 25 Mo. Dans le cas contraire, veuillez contacter nos services."/>
          <?php
//ON AFFICHE LES ERREURS DE FICHIERS (TAILLE / FORMAT)
if (isset($erreur_type_fichier))
	echo $erreur_type_fichier;
if (isset($erreur_taille_fichier))
	echo $erreur_taille_fichier;
if (isset($erreur_transfert_fichier))
	echo $erreur_transfert_fichier;	
?>
<input name="parcourir3" type="file" id="parcourir3" value="Parcourir" alt="Parcourir" title="La taille du fichier ne doit pas excéder 25 Mo. Dans le cas contraire, veuillez contacter nos services."/>
          <?php
//ON AFFICHE LES ERREURS DE FICHIERS (TAILLE / FORMAT)
if (isset($erreur_type_fichier))
	echo $erreur_type_fichier;
if (isset($erreur_taille_fichier))
	echo $erreur_taille_fichier;
if (isset($erreur_transfert_fichier))
	echo $erreur_transfert_fichier;	
?></td>






A voir également:

2 réponses

oxymore64 Messages postés 34 Date d'inscription samedi 23 avril 2011 Statut Membre Dernière intervention 16 juin 2012
1 oct. 2011 à 12:54
Vraiment personne pour m'aider ? Juste un indice suffirait pour orienter mes recherches. Please !
0
oxymore64 Messages postés 34 Date d'inscription samedi 23 avril 2011 Statut Membre Dernière intervention 16 juin 2012
1 oct. 2011 à 13:51
Bon j'ai trouvé. Pour ceux que ça intéresse :

if(is_uploaded_file($tmp_name))
		{
			$file = fopen($tmp_name,'rb');
			$data = fread($file,filesize($tmp_name));
			fclose($file);
			$data = chunk_split(base64_encode($data));
		}
		if(is_uploaded_file($tmp_name2))
		{
			$file = fopen($tmp_name2,'rb');
			$data = fread($file,filesize($tmp_name2));
			fclose($file);
			$data = chunk_split(base64_encode($data));
		}
		if(is_uploaded_file($tmp_name3))
		{
			$file = fopen($tmp_name3,'rb');
			$data = fread($file,filesize($tmp_name3));
			fclose($file);
			$data = chunk_split(base64_encode($data));
		}


Puis

$msg .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" . " name=\"{$name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
		$msg .= "--{$mime_boundary}\n" . "Content-Type: {$type2};\n" . " name=\"{$name2}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
		$msg .= "--{$mime_boundary}\n" . "Content-Type: {$type3};\n" . " name=\"{$name3}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n";


Attention de ne fermer avec "--{$mime_boundary}--\n"; que sur la dernière ligne.
0