Plusieurs input file, form php
Résolu
oxymore64
Messages postés
35
Statut
Membre
-
oxymore64 Messages postés 35 Statut Membre -
oxymore64 Messages postés 35 Statut Membre -
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
Le traitement
Et les inputs
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:
- Plusieurs input file, form php
- .Dat file - Guide
- Host file - Guide
- .Bin file - Guide
- Iso file - Guide
- File sdcard/dcim - Télécharger - Gestion de fichiers
2 réponses
Bon j'ai trouvé. Pour ceux que ça intéresse :
Puis
Attention de ne fermer avec "--{$mime_boundary}--\n"; que sur la dernière ligne.
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.