Tom's Guide > Forum > Programmation > problème de formulaire qui envoit des fichiers

problème de formulaire qui envoit des fichiers

Forum Programmation : problème de formulaire qui envoit des fichiers

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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)

Code :
  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 ?

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Tu dois joindre le fichier (il faut que php le detecte) phpfrance.com

Répondre à okin@IDN

salut je crois qu'il faut faire ca:

Code :
  1. <form method="post" enctype="multipart/form-data" action="upload.php">
  2. <p>
  3. <input type="file" name="fichier" size="30">
  4. <input type="submit" name="upload" value="Uploader">
  5. </p>
  6. </form>


il faut mettre la ligne enctype
voila

Répondre à grenouille369

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

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

Répondre à docteurdupc

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;

?>

Répondre à WindowsMaster

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...

Répondre à docteurdupc

j'ai pas tous compris tu veux upload un fichier puis l'envoyé par mail c'est sa ???? ou bien tu veux carrément faire une sorte de client mail style msn , gmail etc ... ??????

Répondre à WindowsMaster

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...

Répondre à docteurdupc

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.

Répondre à NooD

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

Répondre à docteurdupc

Citation :


je ne connais pas la commande pour joindre un fichier à un mail



lol moi j'en utilise un , je les trouver ici c'est un scripts mail avec pièce jointe donc tu mail tu met le fichier et tu l''envoy par mail

Répondre à WindowsMaster

merci WindowsMaster
le script fonctionne a merveille pour une photo de 129 ko, il ne me reste plus qu'a essayer des gros fichiers de plus de 40 mo :-D

Répondre à docteurdupc

Mais 2 rien une dernière chose du peux changer pour la taille MAX que tu peux envoyé moi j'ai mis 99999999999999999999999999999999999999999999999999999999999999999999999999999999 alor je peux envoyé combien je veux ! :-D

Répondre à WindowsMaster

il y a juste un petit problème, j'arrive à envoyer des photos jpeg et jpg ainsi que des fichiers excel, mais pas de .exe ni de .zip

ou est-ce que je peux dire toutes les extensions permises ?

Répondre à docteurdupc

WindowMaster, tu sais tu ou est-ce que je peux dire tout les fichiers que je veux envoyer (.zip / .rar / .exe / etc...)

car j'ai beau chercher dans les fichiers du répertoire et je ne trouve pas...

Répondre à docteurdupc

non dsl je sais pas comment en ajouter les extions mais il doit y avoir une ligne avec les noms des extions quand peux envoyé

Répondre à WindowsMaster

pourtant j'ai bien regardé, ce que j'ai trouvé c'est augmenter la taille a la place du 500 ko

Répondre à docteurdupc
Tom's Guide > Forum > Programmation > problème de formulaire qui envoit des fichiers
Aller à :

Il y a 348 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens