Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
18 Novembre 2017, 04:05:56


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: Envoie un formulaire avec piece jointe  (Lu 13506 fois)
0 Membres et 1 Invité sur ce fil de discussion.
ChevalierN
Nouveau
*
Hors ligne Hors ligne

Messages: 6


Voir le profil
« le: 30 Décembre 2008, 17:06:54 »

Bonsoir à tous,

Bon j'ai un formulaire avec nom, prénom, ville, code postal, .... ect et j'ai rajouté à mon formulaire pour récupèrer une pièce jointe si le client veut envoyer une image, un pdf, une doc, enfin tous les formats possible quoi ^^ enfin sauf php et html.

voilà le code de ma page contact.html

Citation
<form method="post" action='contact.php' enctype="multipart/form-data" name="devis" onSubmit="return validation();"><INPUT TYPE="hidden" NAME="sujet" VALUE="Contact">

              <span class="Style15"><strong>Fichier joint:</strong></span><br />
      <input type="hidden" name="MAX_FILE_SIZE" value="100000"><input name="Fichier" type="file" size="16"> <span class="Style15"><strong>(8Mo Maximum)</strong></span>
        <br/>
                                          <br />
<input type="submit" name="envoi" value="Envoyer">
                                    &nbsp;&nbsp;&nbsp;&nbsp;
                                      <input type=reset name=Effacer value=Effacer> <br />
                             
                            </form>

contact.php

Citation
<?php
include 'contact.config.php';

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
   {
      // formulaire non envoyé
      echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
   }
   else
   {
   // formulaire envoyé, on récupère tous les champs.
      $sujet=$_POST['sujet'];
      $nom =$_POST['nom'];
      $adresse=$_POST["adresse"];
      $code=$_POST["code"];
      $ville=$_POST["ville"];
      $tel=$_POST["tel"];
      $email=$_POST['email'];
      $msg=$_POST["message"];
   
      // On va vérifier les variables et l'email ...
      $email1 = (verifmail($email)); // soit l'email est vide si erroné, soit il vaut l'email entré   
      if(($email1 != "")&($nom != "")&($ville != "")&($code != "")&($tel != "")&($adresse != "")&($msg != ""))
      {

                 //Corps du mail en commençant par le message principal
      setlocale (LC_TIME, 'fr_FR');
                         $mail_corps =  "Envoyé le ".strftime("%A %d %B %Y à %Hh%M")." par $nom\r\n";
      $mail_corps .= "\r\n";   
      $mail_corps .="Sujet : $sujet\r\n";
      $mail_corps .= "Demande de : $nom $prenom\r\n";
      $mail_corps .= "Adresse : $adresse $code $ville $pays\r\n";
      $mail_corps .= "\r\n";
      $mail_corps .= "Téléphone : $tel\r\n";
      $mail_corps .= "Mail : $email\r\n\n";      
      $mail_corps .= "Message du client : $msg\r\n\n";
   
   //Préparation de l'entête du mail:
      $boundary = '-----=' . md5(uniqid(mt_rand()));
      $mail_entete = "From: $email\r\n";
      $mail_entete .= "Reply-To: $email\r\n";
      $mail_entete .= "MIME-Version: 1.0\r\n";
      $mail_entete .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'."\r\n\n";
      $mail_entete .= "X-Mailer: PHP/" . phpversion() . "\n" ;
      
   //Corps du mail en commençant par le message principal
      $message .= '--'.$boundary."\r\n";
      $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
      $message .= 'Content-Transfer-Encoding: 8bit'."\r\n\n";
      $message .= "\r\n\n";
      $message .= $mail_corps."\r\n\n";
      $message .= "\r\n\n";

   //**********************PIECE JOINTE******************************//
      $file_name = $_FILES['Fichier']['name'];
      $source = $_FILES['Fichier']['tmp_name'];
      $file_type = $_FILES['Fichier']['type'];
      $file_size = $_FILES['Fichier']['size'];   
      move_uploaded_file($source,"./".$file_name); 
      

      if($file_name!="")
         {
            $file = $name_file;
            $handle = fopen($file,'rb');
            $content = fread($handle, $file_size);
            $content = chunk_split(base64_encode($content));
            fclose($handle);
            
            $message .= '--'.$boundary."\r\n";
            $message .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
            $message .= 'Content-transfer-encoding:base64'."\r\n";
            $message .= 'Content-Disposition:inline; filename='.$file_name.'\r\n\n';
            $message .= '\r\n\n';
            $message .= $content."\r\n";
         
         }      
      $message .= '--'.$boundary.'--'."\r\n";
   
      // envoi du mail
       if (mail($to,"demande de devis",$message,$mail_entete)) {
       //Le mail est bien expédié
          include($page_ok);
       } else {
       //Le mail n'a pas été expédié
          include($page_erreur);
       }
   }
}
                                             
?>

Bon mon problème avec le fichie jointe pendant l'envoie du formulaire, je le reçoit bien, avec le nom et la taille mais pas le contenu du fichier.

Par exemple, je mets une image dans le formulaire image.jpeg, j'envoie le formulaire.
Je regarde sur la boite mail, je vois bien la pièce jointe, je le télécharge, j'ai bien le même nom image.jpeg et la même taille du fichier, puis je veux regarde l'image et là je ne peux pas voir l'image image.jpeg.

Alors je crois qu'il me manque un petit truc et je crois que c'est la fonction file_get_contents($file_name) et peut-être faire des restreintes des fichiers je pense (.pdf,.doc,.xdoc,xls,jpeg,bmp,ect ...).

Merci d'avance pour ceux qui m'aide (j'ai vu une class mail pour ça mais je ne veux pas l'utiliser ^^ car je veux juste la pièce jointe, si il n'y a pas de solution, ben je la prendrais alors ^^).
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« le: 30 Décembre 2008, 17:06:54 »

 Journalisée
chrmag
Bavard
***
Hors ligne Hors ligne

Messages: 131


Voir le profil WWW
« Répondre #1 le: 30 Décembre 2008, 23:12:48 »

Quand tu inclus le fichier tu as "\r\n\n" a la place du "\r\n\r\n". Sinon, ca semble bon.

Juste pour info:
  • la fonction file_get_contents sert juste a lire entierement un fichier, dans ton cas tu le fais en plusieurs lignes, mais a la fin c'est la meme chose
  • pour mon site web, j'utilise une petite bibliotheque: PHPMailer qui se charge de faire ce que tu fais ici, car je suis pas specialiste dans l'encodage des mails et par ailleurs je viens de me rendre compte que j'ai une super ancienne version  Roulement des yeux
Journalisée
ChevalierN
Nouveau
*
Hors ligne Hors ligne

Messages: 6


Voir le profil
« Répondre #2 le: 01 Janvier 2009, 08:56:48 »

ah ok merci.

oui je savais qui avait une classe qui fait ça.

je fais voir ta class ^^.

merci
Journalisée
Moua
Nouveau
*
Hors ligne Hors ligne

Messages: 6


Voir le profil
« Répondre #3 le: 17 Juillet 2009, 14:05:13 »

Salut,

Si tu cherche à utiliser PHPMailer, il existe un bon cours sur la mise en place d'un formulaire qui envoie un mail. T'y ajoute la fonction AddAttachment de PHPMailer et paf, t'as ton envoi de mail avec pièce jointe : http://blog.myeasyprog.fr/formulaire-de-contact-avec-phpmailer/
Journalisée
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.103 secondes avec 20 requêtes.