IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Modifier un script de formulaire


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut Modifier un script de formulaire
    Bonjour à tous,

    j'ai un petit formulaire de contact avec une pièce jointe (il fonctionne très bien.

    J'aimerai pouvoir en mettre deux .

    J’essaie de travailler le code, le mieux que j'ai réussi à faire c'est bien d'avoir deux pièces jointes mais ce sont les deux mêmes qui s'affichent.

    voici le code de traitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
     
    if(isset($_POST['button']) && isset($_FILES['attachment']))
    {
        $reply_to_email = $_POST["sender_email"]; 
        $from_email = $reply_to_email;
        $recipient_email = 'riri.fifil@loulou.fr'; 
     
        //Load POST data from HTML form
        $sender_name = $_POST["sender_name"];
        $reply_to_email = $_POST["sender_email"]; 
        $subject     = $_POST["subject"]; 
        $message     = $_POST["message"];
     
        //Get uploaded file data using $_FILES array
        $tmp_name = $_FILES['attachment']['tmp_name'];
        $name     = $_FILES['attachment']['name']; 
        $size     = $_FILES['attachment']['size']; 
        $type     = $_FILES['attachment']['type'];
        $error     = $_FILES['attachment']['error'];
     
        if($error > 0)
        {
            die('Upload error or No files uploaded');
        }
     
        $handle = fopen($tmp_name, "r");
        $content = fread($handle, $size);
        fclose($handle);
     
        $encoded_content = chunk_split(base64_encode($content));
        $boundary = md5("random");
     
        $headers = "MIME-Version: 1.0\r\n"; 
        $headers .= "From:".$from_email."\r\n";
        $headers .= "Reply-To: ".$reply_to_email."\r\n"; 
        $headers .= "Content-Type: multipart/mixed;";
        $headers .= "boundary = $boundary\r\n"; 
     
     
     
        $body = "--$boundary\r\n";
        $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
        $body .= "Content-Transfer-Encoding: base64\r\n\r\n";
        $body .= chunk_split(base64_encode($message));
     
        $body .= "--$boundary\r\n";
        $body .="Content-Type: $type; name=".$name."\r\n";
        $body .="Content-Disposition: attachment; filename=".$name."\r\n";
        $body .="Content-Transfer-Encoding: base64\r\n";
        $body .="X-Attachment-Id: ".rand(1000, 99999)."\r\n\r\n";
        $body .= $encoded_content; // Attaching the encoded file with email
     
        $sentMailResult = mail($recipient_email, $subject, $body, $headers);
     
        if($sentMailResult ){
            //echo "<h3>File Sent Successfully.<h3>";
            header("Refresh: 5; url=../../vide2.php");//redirection vers le formulaire de connexion dans 5 secondes
            echo "Mail pris en compte.<br><br><i>Redirection en cours, vers la page d/'accueuil...</i>"; //Redirection
            exit(0);//on arrête l'éxécution du reste de la page avec exit, si le membre n'est pas connecté
     
     
        }
        else{
            die("Sorry but the email could not be sent.
                        Please go back and try again!");
        }
    }
    ?>
    voici le formulaire d'envoi

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <form enctype="multipart/form-data" method="POST" action="" style="width: 500px;">
                <div class="form-group">
                  <input class="form-control" type="text" name="sender_name" value="<?php echo $_SESSION['login']; ?>" required/ readonly/>
                </div>
                <div class="form-group">
                  <input class="form-control" type="email" name="sender_email" placeholder="Votre M@ail ici" required/>
                </div>
                <div class="form-group">
                  <input class="form-control" type="text" name="subject" value="Prestation "required/ readonly/>
                </div><br>
                <div class="form-group">
                    <input class="form-control" type="hidden" name="message" value="Bonjour je suis <?php echo $_SESSION['login']; ?>, par ce  mail, je fais la demande . Vous trouverez ci-joints les documents requis. Cordialement. "required/ readonly/>
                </div>
                <div class="form-group"> <span class="Style3">
                  <label><strong><u>Acte de naissance :</u></strong></label>
                </span>
                    <input class="form-control" type="file" name="attachment" placeholder="Pièce à joindre" required/>
                </div>
                <br>
     
                <label><span class="Style5"><u>Facture d'au moins 100€ :</u></span></label>
                <div class="form-group">
                    <input class="form-control" type="file" name="attachment2" placeholder="Pièce à joindre"/>
                </div>
     
                <div class="form-group"><br>
                  <div align="center"><span class="Style1"><u>ATTENTION</u></span>, <strong>le temps de télécgargement du mail dépend de votre connexion et de la taille des pièces jointes <br>
                 Laissez le temps, vous serrez redirigé.</strong> </div>
                </div> <br><br>
                <div class="form-group">
                    <div align="center">
                      <input class="btn btn-primary" type="submit" name="button" value="Envoyer" />
                        </div>
                </div>           
            </form>

    Merci de votre aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Bonjour,

    Si vous envoyez plus d'un fichier à la fois, que vous utilisez le même nom pour le champ file (avec []) ou pas, vous allez vous retrouver avec un array de fichiers, il faut donc juste faire une boucle sur cet array. Examinez attentivement le contenu de $_FILES.
    Un exemple ici

    Pour la composition du mail avec pièces jointes, je vous recommande d'utiliser plutôt phpmailer. Vous pouvez gérer l'envoi en 5 ligne de code à peu près. C'est beaucoup plus simple, concis, et réutilisable.
    Et ça vous offre beaucoup d'autres possibilités comme envoyer du mail texte et HTML.

    Dans votre cas, il y a un argument supplémentaire pour "upgrader" cette partie du code: c'est la sécurité. Ce code me paraît vulnérable à un "header injection", ce qui permet à des robots malveillant de détourner ce formulaire pour envoyer du spam par votre intermédiaire. Une petite explication technique ici.
    Dans le passé j'ai eu au moins un client dont l'hébergement a été suspendu pour cette raison

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    Merci beaucoup je vais étudier vos liens

    encore merci

Discussions similaires

  1. Aide sur modification d'un site
    Par henda24 dans le forum Langage
    Réponses: 1
    Dernier message: 15/10/2009, 12h09
  2. Besoin d'aide sur modif source flash
    Par delavega dans le forum Flash
    Réponses: 0
    Dernier message: 13/12/2008, 21h32
  3. Aide sur modification d' une fonction.
    Par superadnan3 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/01/2006, 17h29
  4. Aide pour modification de script
    Par cryptorchild dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2005, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo