
|
|
Auteur
|
Message
|
1
|
|
|
|
Bonjour à tous, je suis nouveau sur ce forum et je débute complétement en php.
Je souhaite créer un formulaire en php avec la possibilité d'insérer une pièce jointe. Je voudrais récupérer l'ensemble des champs du formulaire dans le corps d'un mail, avec la pièce jointe, comme son nom l'indique, en pièce jointe dans un mail. Pour l'instant, j'arrives à récupérer l'ensemble des champs dans le corps d'un mail, y compris le nom temporaire, attribué par le serveur, de mon fichier joint. Par contre cela fait 1,5 jour que j'essaie de récupérer la pièce jointe mais jusqu'ici je n'y suis pas parvenu.
Voici mon code, qui me permet de récupérer, aussi, l'ensemble des champs dans mon mail:
<?php
if (isset($_POST['envoie']))
{
//Pour afficher le Nom
$message = "Nom : ";
$message .= $_POST['nom'];
//Pour afficher le prénom
$message .= "\nPrenom : ";
$message .= $_POST['prenom'];
//Pour afficher l'adresse
$message .= "\nAdresse : ";
$message .= $_POST['adresse'];
//Pour afficher le Code Postal
$message .= "\nCode Postal : ";
$message .= $_POST['cp'];
//Pour afficher la ville
$message .= "\nVille : ";
$message .= $_POST['ville'];
//Pour afficher le Téléphone
$message .= "\nTelephone : ";
$message .= $_POST['tel'];
//Pour afficher l'email
$message .= "\nEmail : ";
$message .= $_POST['email'];
//Pour afficher le type d'activité
$message .= "\nactivité : ";
$message .= $_POST['type'];
//Pour afficher le type de contact souhaité
$message .= "\nContact : ";
$message .= $_POST['contact'];
//Pour afficher le descriptif de l'activité $message .= "\nDescriptif : ";
$message .= $_POST['descriptif'];
//Pour insérer la pièce jointe
$file .= "\nFichier : ";
$file .= $_FILES["fichier"];
$file .= $_FILES["fichier"]['tmp_name'];
print_r($_FILES["fichier"]) ;
//$message .= $_POST["MAX_FILE_SIZE"];
//$message .=$_POST["$fichier"];
//Por récupérer la pièce jointe
//$message .= "\nFichier : ";
$ret = mail("monmail@mondomaine.com", "sujet", $message, $file);
if ($ret === true)
echo "Votre demande a bien été prise en compte.
else
echo "Tapez correctement les champs, s'il vous plaît";
}
else
{
?><br>Formulaire
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST" enctype="multipart/form-data">
<br>
<table width="700" border="0">
<tr>
<td width="187"><font face="Arial, Helvetica, sans-serif">Nom : </font></td>
<td width="503"><input name="nom" type="text" class="champ" size="50"/>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Prénom : </font></td>
<td> <input name="prenom" type="text" class="champ" size="40"/>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Adresse : </font></td>
<td><input name="adresse" type="text" class="champ" size="40" />
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Code Postal :</font> </td>
<td> <input name="cp" type="text" class="champ" id="cp" size="5" maxlength="5"/>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Ville : </font></td>
<td><input name="ville" type="text" class="champ" id="ville" size="40"/>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Téléphone :</font> </td>
<td><input name="tel" type="text" class="champ" size="15"/>
(*)</td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Email :</font></td>
<td> <input name="email" type="text" class="champ" size="40"/>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Type de prestation :</font> </td>
<td><select name="type" id="type" class="champ" >
<option value="Aucune </option>
<option value="activité0</option>
<option value="activité1">activité1</option>
<option value="activité2">activité2</option>
<option value="activité3">activité3</option>
<option value="activité4">activité4</option>
<option value="activité5">activité5</option>
<option value="activité6">activité6</option>
</select>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Vous souhaitez être contacté :</font> </td>
<td><select name="contact" id="contact" class="champ">
<option value="Aucune
Choisissez</option>
<option value="tel">téléphone</option>
<option value=" mail">Par mail</option>
</select>
(*) </td>
</tr>
<tr>
<td> </td>
<td><p><strong><font face="Arial, Helvetica, sans-serif">Descriptif de votre demande :</font> </strong></font></p>
<p>
<input type="file" name="fichier" accept="image/jpeg" size="50" />
<input type="hidden" name="MAX_FILE_SIZE" value="200000" />
</p>
<p>
<td>
<td> </p></td>
</tr>
<tr>
<td> </td>
<td><textarea name="descriptif" cols="60" rows="8" class="champ"></textarea>
</font> (*)</td>
</tr>
<tr>
<td> </td>
<td>
<div align="left">
<input name="envoie" type="hidden" value="1" />
<input name="image" type="image" src="valider.jpg" />
<input type="button" value="Imprimer cette page" onClick="window.print()">
<input name="réinitialiser" type="reset" value="Réinitialiser" /></div></td>
</tr>
<tr>
<td> </td>
<td><font face="Arial, Helvetica, sans-serif"><b>(*) Champs obligatoires</b></font></td>
</tr>
<tr>
<td> </td>
<td> <div align="left"></div></td>
</tr>
</table>
</form>
<?php }?>
<!--Code php-->
<?php
if (isset($_FILES))
{
echo "Taille maximale autorisée :",$_POST["MAX_FILE_SIZE"]," octets<hr />";
echo "<b>Clés et valeurs du tableau \$_FILES </b><br />";
foreach($_FILES["fichier"] as $cle => $valeur)
{
echo "clé:: $cle valeur : $valeur <br />";
}
//Enregistrement et renommage du fichier
$result=move_uploaded_file($_FILES["fichier"]["tmp_name"],"demande.doc");
if ($result==TRUE){echo "<hr /><big>Le transfert est réalisé !</big>";}
else{echo "<hr /> Erreur de transfert n°",$_FILES["fichier"]["error"];}
}
?>
</body>
</html>
je ne sais pas comment m'y prendre pour commencer et arriver à récupérer en pièce jointe dans mon mail, un fichier joint dans un formulaire. Quelqu'un pourrais il me faire des suggestions. Merci d'avance à celles ou ceux qui voudront ce pencher sur mon problème. bonne journée à tous.
|
|
|
|
|
Rebonjour, comme nous travaillons avec un camarade sur ce formulaire, il m'a envoyé la solution suivante que j'ai testé sur easyphp 1.8. Pour l'instant nous travaillon sur un formulaire d'envoi de mail, mais le formulaire complet que nous avons élaboré est plus long:
le formulaire html
<form name='formularaire' id='formulaire' method='post' action='enviar.php' target='_self' enctype="multipart/form-data">
<p>Nom <input type='text' name='Nom' id='Nom'></p>
<p>E-mail
<input type='text' name='email' id='email'>
</p>
<p>Object
<input type='text' name='object' id='object' />
</p>
<p>Menssage
<textarea name="menssage" cols="50" rows="10" id="menssage"></textarea>
</p>
<p>Jointer Fichier: <input type='file' name='Fichier1' id='Fichier1'></p>
<p>
<input type='submit' value='Envoyer'>
</p>
</form>
le code php: envoi.php
<?php
function form_mail($sPour, $sObject, $sText, $sDe)
{
$bIlyaFichiers = 0;
$sEnteteText = "";
$sJointees = "";
if ($sDe)$sEntetes = "From:".$sDe."\n";
else $sEntetes = "";
$sEntetes .= "MIME-version: 1.0\n";
foreach ($_POST as $sNom => $sValeur)
$sText = $sText."\n".$sNom." = ".$sValeur;
foreach ($_FILES as $vJointees)
{
if ($bIlyaFichiers == 0)
{
$bIlyaFichiers = 1;
$sEntetes .= "Content-type: multipart/mixed;";
$sEntetes .= "boundary=\"--_Separador-de-mensajes_--\"\n";
$sEnteteText = "----_Separador-de-mensajes_--\n";
$sEnteteText .= "Content-type: text/plain;charset=iso-8859-1\n";
//$sEnteteText .= "Content-transfer-encoding: 7BIT\n";
$sText = $sEnteteText.$sText;
}
if ($vJointees["size"] > 0)
{
$sJointees .= "\n\n----Separateur des messages_--\n";
$sJointees .= "Content-type: ".$vJointees["type"].";name=\"".$vJointees["name"]."\"\n";;
//$sJointees .= "Content-Transfer-Encoding: BASE64\n";
$sJointees .= "Content-disposition: attachment;filename=\"".$vJointees["name"]."\"\n\n";
$oFichier = fopen($vJointees["tmp_name"], 'r');
$sContenu = fread($oFichier, filesize($vJointees["tmp_name"]));
$sJointees .= chunk_split(base64_encode($sContenu));
fclose($oFichier);
}
}
if ($bIlyaFichiers)
//le separateur tu peut le changer
$sText .= $sJointees."\n\n----_Separateur des messages_----\n";
return(mail($sPour, $sObject, $sText, $sEntetes));
}
//ici l'adresse mail
if (form_mail("monmail@mondomaine.fr ", $_POST[object],
"Les données introduit sur le formulaire son::\n\n", $_POST[email]))
echo "Merci pour les données";
?>
Pb ??????
Tout est récupéré dans le corps du mail:
expéditeur, destinataire, sujet, message et la pièce jointe, qui apparaît encodée et non pas en pièce jointe. Est ce que le pb ne viendrait pas d'easyphp qui ne permettrait pas l'envoi d'une pièce jointe. Sinon où est l'erreur dans le code. Merci pour votre aide, car cela fait 2 jours que nous travaillons sur ça et là nous bloquons complétement.
|
|
1
|
|

|

|