Se connecter avec
S'enregistrer | Connectez-vous

problème de formulaire qui envoit des fichiers

Dernière réponse : dans Programmation

Bonjour, j'ai un formulaire qui envoit les données inscrites sur la page à mon courrier, jusqu'a la, tout marche bien, mais là, j'essais de mettre un champ fichier (file field)
  1. <html>
  2. <body>
  3. <form method=POST action=form2mail.php>
  4. <input name="envoitdefichier" type="file">
  5. .........autres champs.........
  6. </form>
  7. </body>
  8. </html>


je reçois le email avec les données inscrites, mais pas le fichier que j'y ai mit, pourquoi, qu'est-ce que j'ai fais qui ne serait pas bien ?
Lassé par la pub ? Créez un compte

voila mon script, mais ca ne fonctionne pas, je recois la confirmation que ca été envoyé, mais je ne recois rien

  1. première page : Le formulaire
  2.  
  3. <html>
  4. <body>
  5.  
  6. <form ENCTYPE="multipart/form-data" action="./mail4.php" method=POST>
  7. <center>
  8. De: <input type=text name = "from" size="30"><br>
  9. Destinataire: <input type=text name = "to" size="30"><br>
  10. Sujet: <input type=text name = "sujet" size="30"><br><br>
  11. Texte :<br><textarea name="message" rows="15" cols="40"></textarea><br>
  12. <INPUT TYPE=FILE NAME="monfichier">
  13.  
  14. <input type=submit value="envoi">
  15. </center>
  16. </form>
  17.  
  18. </body>
  19. </html>
  20.  
  21. La deuxième page appelée ici mail4.php :
  22. <html>
  23. <body> <center>
  24. <?
  25.  
  26. $name_file = $_FILES['monfichier']['name'];
  27. $source=$_FILES['monfichier']['tmp_name'];
  28.  
  29. move_uploaded_file($source, "./".$name_file);
  30.  
  31. $extension=get_extension($name_file);
  32.  
  33. $type="text/plain";
  34. if($type=="doc")
  35. {
  36. $type="text/vnd.ms-word";
  37. }
  38. else if($type=="xls")
  39. {
  40. $type="text/vnd.ms-excel";
  41. }
  42.  
  43. $type2="image/png";
  44.  
  45. if($extension=="gif")
  46. {
  47. $type2="image/gif";
  48. }
  49. else if($extension=="bmp")
  50. {
  51. $type2="image/bmp";
  52. }
  53.  
  54. function get_extension($filename)
  55. {
  56. $parts = explode('.',$filename);
  57. $last = count($parts) - 1;
  58. $ext = $parts[$last];
  59. return $ext;
  60. }
  61.  
  62. //----------------------------------
  63. // Construction de l'entête
  64. //----------------------------------
  65.  
  66. if($_POST['to']!="")
  67. {
  68. $boundary = "-----=".md5(uniqid(rand()));
  69. $header = "MIME-Version: 1.0\r\n";
  70. $header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
  71. $header .= "\r\n";
  72.  
  73. $msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
  74.  
  75. $msg .= "--$boundary\r\n";
  76.  
  77. $msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
  78. $msg .= "Content-Transfer-Encoding:8bit\r\n";
  79. $msg .= "\r\n";
  80. $msg .= $_POST['message'];
  81. $msg .= "\r\n";
  82.  
  83. if($name_file!="")
  84. {
  85. $file = $name_file;
  86. $fp = fopen($file, "rb");
  87. $attachment = fread($fp, filesize($file));
  88. fclose($fp);
  89.  
  90. $attachment = chunk_split(base64_encode($attachment));
  91.  
  92.  
  93. $msg .= "--$boundary\r\n";
  94. $msg .= "Content-Type: $type2; name=\"$file\"\r\n";
  95. $msg .= "Content-Transfer-Encoding: base64\r\n";
  96. $msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
  97. $msg .= "\r\n";
  98. $msg .= $attachment . "\r\n";
  99. $msg .= "\r\n\r\n";
  100. $msg .= "--$boundary--\r\n";
  101. }
  102.  
  103. $destinataire = $_POST['to'];
  104. $expediteur = $_POST['from'];
  105. $reponse = $expediteur;
  106. echo "Mail envoyé à $destinataire";
  107.  
  108. mail($destinataire, $_POST['sujet'], $msg,
  109. "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
  110.  
  111. }
  112.  
  113. if($name_file!="")
  114. {
  115. unlink($name_file);
  116. }
  117. print("<br>\n");
  118. print("<br><A href=./mail3.php target=\"principal\"><font size=2>Envoyer un autre mail</font></A>");
  119. ?>
  120. </center>
  121. </body>
  122. </html>

si j'ai compris tu veux recevoir un contact mail c'est sa ??? bon tu peux faire comme sa :

page 1 :

<html>
<HEAD>
<TITLE>Easyform 1.0</TITLE>
</HEAD>
<BODY>

<?PHP include("form.php"); ?>

</BODY>
</html>





page : 2 nomme la : form.php lol si tu veux haha


/*
*************************************************************************************
* EasyForm 1.0.2 *
*************************************************************************************
* Auteur : AMOUZOU Amen Wenceslas alias amen0phis, www.amouzou.org *
* Copyright : Cette application est gratuit; *
* envoyez moi juste un mail à amouzou_amen@yahoo.fr pour me faire plaisir *
*************************************************************************************
* Nom du fichier formMoteur.php *
* Date de création : 18 Février 2005 *
* Date de modification : 19 JUIN 2005 *
************************************************************************************/

//=========================DEBUT CONFIGURATION======================================
$nb_chp_imput = 4; // Le nombre de champ INPUT (champ de texte)
$nb_chp_textarea = 1; //Le nombre de zone de texte
$tb_etiquette = array("Nom","Ville","E-Mail","Objet","Message"); //Liste des étiquettes des champs dans cet ordre! Echappez d'éventuels griffes <<">> avec <<\>> dans les libellés

$email_dest = "ADRESSE MAIL"; //adresse email où les données collectées iront
$email_objet = "Formulaire de contact 1.0";
$site_url = "NOM SITE"; //adresse du site
$couleur1 = "#E7E7E7"; //Couleur d'alternance 1 des lignes dans le tableau
$couleur2 = "#DDDDDD"; //Couleur d'alternance 2 des lignes dans le tableau
$tab_bordure = 0; // La bordure du tableau

//===========================FIN CONFIGURATION================================//



if($nb_chp_imput==0){
echo "<center>Pour utiliser EasyForm, spécifiez au moins un champ input dans le fichier formMoteur.php; changer la valeur 0 de la variable \$nb_chp_imput</center>";
exit;
}
// Nous allons créer le formulaire nécessaire

$form_out_put = "\n<BR/><BR/><form name='form1' action='".$_SERVER['PHP_SELF']."' method = 'POST'>\n";
$form_out_put .= "<table align='center' width='50%'>\n";
$cpt = 1; //Ce compteur va ous permettre l'alternance des couleurs dans le tableau

for ($i=0; $i<$nb_chp_imput+$nb_chp_textarea; $i++) {
$couleur = ($cpt%2)? $couleur1 :$couleur2;
$form_out_put .= "<tr bgcolor='$couleur'><td width='30%' valign='top' align='right'>";
if (!isset($tb_etiquette[$i])) $tb_etiquette[$i] = "ETIQUETTE NON DEFINIE";
$form_out_put .= " <b>$tb_etiquette[$i] :</b> </td><td>";
//Si nous sommes sur les input
if ($i<$nb_chp_imput) {
$form_out_put .= "<input name='field[]' type='text' size='32' ";
if(isset($field)) $form_out_put .= "value='$field[$i]' />";

$form_out_put .= "</td></tr>\n";

}else{
if ($i<$nb_chp_textarea+$nb_chp_imput) {
$form_out_put .= "<TEXTAREA name='field[]' rows='7' cols='28'>";
if(isset($field)) $form_out_put .= $field[$i];
$form_out_put .= "</TEXTAREA></td></tr>\n";

}
}

$cpt++;
}

$form_out_put .= "<tr><td align='right'><input type=submit value=Envoyer /></td><td><input type=reset value='Tout effacer' /></td></tr>";
$form_out_put .= "<tr><td colspan=2 align=center>Contact Mail <A href='mailto:TON ADRESSE MAIL'>NOM DU SITE</A>\n<br><br></td></tr>";
$form_out_put .= "</table>\n";
$form_out_put .= "<input type=hidden name=envoi value=1/>";
$form_out_put .= "</form>";



// nOus allons recueillir et traiter le formulaire
//Nous supposons dans cette première mouture que tous les champs seront obligatoires

$message = NULL;
$headers = NULL;


if (!isset($_POST["envoi"])) {
//eventuel message
}else {
$champ = $_POST["field"];
if (in_array("", $champ)){
$text_put_alert = "<center><span class='alert'>Tous les champs sont obligatoires \n<br></span></center>";
}else{
//Traitement si tout est bon
//Les valeurs sont contenues dans le tableau $champ
//Pour atteindre une valeur, $champ[x] , xétant l'index de l'élément dans la définition des étiquettes

$message .= "Ce mail provient du formulaire d'envoi du site <b>$site_url</b>";
$message .= "<hr>";
while(list($index,$valeur) = each($champ)){
$message .= "\n<br>- $tb_etiquette[$index] : <b>$valeur</b> ";
}
$message .= "<HR>Contact Mail est écrit par <a href=mailto:Valdrin_15@msn.com>Valdrin</a>\n
";
$message .= "In Form, We Trust!";

$headers .= "From: EasyForm \n";
$headers .= "X-Mailer: PHP\n";
$headers .= "X-Priority: 0\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";


$envoi_mail = @mail($email_dest, $email_objet, $message, $headers);
if($envoi_mail ==true) {
$text_put_confirm = "<center><span class='confirm'>Votre envoi a abouti avec succès \n<br></span></center>";
}else{
$text_put_alert = "<center><span class='alert'>Désolé! Le mail n'a pas pu être envoyé \n<br/>Le moteur SMTP est down \n<br></span></center>";
}

}

}

/*APPEL DU FORMULAIRE*/
if(isset($text_put_alert)) echo $text_put_alert;
if(isset($text_put_confirm)) echo $text_put_confirm;
echo $form_out_put;

?>

en résumé ce que je veux c'est pouvoir aller sur ma page, cliquer sur parcourir, aller chercher un fichier et que ca me l'envoit a mon email

ex:, je vais sur mon site, je dit je veux envoyer ce petit shareware de ma job et me l'envoyer a mon email (2go d'espace) sans avoir a passer par outlook ou d'autre programme, simplement par le navigateur

je suis capable de recevoir l'email, avec le contenu text, mais pas le fichier...

j'utilise FILE SEND
mais le fichier ne se rend pas...

un peu comme geocities
tu va chercher un fichier sur ton ordinateur pour l'envoyer sur le serveur, mais moi au lieu d'aller sur le serveur, il va dans ma boite a lettre gmail

ex : a la job , fichier.jpg
envoyer a fff@gmail.com

fichier recu a fff@gmail.com...

le fichier doit passer par le serveur de toute façon.
le problème c'est que les gros fichiers passeront pas.
je ne connais pas la commande pour joindre un fichier à un mail mais je peux te proposer une alternative :
tu peux sotcker le fichier sur ton serveur dans un répertoire temporaire, et tu envoies le lien par e-mail, ensuite tu auto-détruit ton fichier au bout de x jours.

je ne veux pas mettre ca sur un serveur, car je veux que mes visiteurs puissent m'envoyer des fichiers, certains sont vieux et ne connaissent pas ces sites là de stockage, donc je veux quelque chose qui est simple, sauf que c'est ca... ca ne fonctionne pas comme je veux

je recois tout, sauf le $"/(*"/$ fichier
au pire avez vous des scripts déja tout fait pour envoyer ca (file send, ou file attachment)

merci
Docteur du pc
Lassé par la pub ? Créez un compte
Tom's guide dans le monde