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 :

code pour piece jointe


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut code pour piece jointe
    Bonjour,
    voici un bout de code que j’aimerai utiliser dans un formulaire:
    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
     
    // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
    if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
    {
            // Testons si le fichier n'est pas trop gros
            if ($_FILES['monfichier']['size'] <= 1000000)
            {
                    // Testons si l'extension est autorisée
                    $infosfichier = pathinfo($_FILES['monfichier']['name']);
                    $extension_upload = $infosfichier['extension'];
                    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                    if (in_array($extension_upload, $extensions_autorisees))
                    {
                            // On peut valider le fichier et le stocker définitivement
                            move_uploaded_file($_FILES['monfichier']['tmp_name'], 'upload/' . basename($_FILES['monfichier']['name']));
                            echo "L'envoi a bien été effectué !";
                    }
            }
    }
    malheureusement, la pièce jointe n'est pas uploadé dans mon email de réponse !!
    il doit manquer quelque chose ?
    mais quoi ?
    merci d'avance pour votre aide ?
    @+

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le code que tu nous montres ne parle pas du tout d'email.

  3. #3
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour Archi57, Sabotage,

    Pourquoi ne pas regarder du coté de la librairie PHPMailer ?
    https://github.com/PHPMailer/PHPMailer

    Le soucis des pièces jointes c'est que par exemple un .doc peut contenir un .exe en réalité ou bien
    d'autres formats que celui attendu donc il faudrait aussi considérer le contenu ...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    un .doc peut contenir un .exe en réalité

  5. #5
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Bon .exe c'est un exemple ...

    Ce que je veux dire c'est que, comme dans un mail, une pièce jointe portant une extension donnée,
    peut contenir autre chose ... en provenance d'une personne mal intentionnée.

    Donc dans un formulaire, le contrôle de l'extension, seule ... ne garantit pas que l'on reçoive bien une image.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Bonjour à tous,
    quelqu'un peu me dire si ce bout de code contient des erreurs ? voir des oublis pour uploader une pièce jointe ?
    @+

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce que je veux dire c'est que, comme dans un mail, une pièce jointe portant une extension donnée,
    Si tu prends un executable et que tu lui mets une extension .doc, il devient inopérant, le système ne l’exécutera pas.

    quelqu'un peu me dire si ce bout de code contient des erreurs ? voir des oublis pour uploader une pièce jointe ?
    Ton problème c'est l'upload ou le mail ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    upload !!
    voici mon script complet:
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <?php
    $to = "email@free.fr";
    $eol="\r\n";
    $date = date( 'r' );
    $phpversion = phpversion();
    $nom = $_POST['nom'];
    $adresse = $_POST['adresse'];
    $email = $_POST['email'];
    $portable = $_POST['portable'];
    $stop = $_POST['STOP'];
    $finconf=$eol."N'hésitez pas à répondre à ce mail pour corriger toute erreur.".$eol;
    $LL = $_POST['LL'];
    if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
    {
    if ($_FILES['monfichier']['size'] <= 3000000)
    {
    $infosfichier = pathinfo($_FILES['monfichier']['name']);
    $extension_upload = $infosfichier['extension'];
    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png', 'pdf');
    if (in_array($extension_upload, $extensions_autorisees))
    {
    move_uploaded_file($_FILES['monfichier']['tmp_name'],
    'upload/' . basename($_FILES['monfichier']['name']));
    }
    }
    }
    if($stop) {$infos="Ne souhaite pas se réinscrire.".$eol;}
    else if($LL) {$infos="Souhaite prendre une licence loisir.".$eol; $infosconf="Vous souhaitez prendre une licence loisir.".$eol;}
    else {
    $yena=false;
    $ET = $_POST['ET'];
    if($ET) {$inter.=" - Au championnat par équipe en tant que titulaire".$eol; $yena=true;}
    $ER = $_POST['ER'];
    if($ER) {$inter.=" - Au championnat par équipe en tant que remplaçant".$eol; $yena=true;}
    $CF = $_POST['CF'];
    if($CF) {$inter.=" - Au critérium Fédéral".$eol; $yena=true;}
    $IC = $_POST['IC'];
    if($IC) {$inter.=" - Aux interclubs".$eol; $yena=true;}
    $CL = $_POST['CL'];
    if($CL) {$inter.=" - A la coupe de Lorraine".$eol; $yena=true;}
    $CMo = $_POST['CMo'];
    if($CMo) {$inter.=" - A la coupe de Moselle".$eol; $yena=true;}
    $CMi = $_POST['CMi'];
    if($CMi) {$inter.=" - A la coupe de la Mirabelle".$eol; $yena=true;}
    if($yena) {$infosconf="Vous souhaitez participer:".$eol.$inter.$finconf; $infos="Souhaite participer:".$eol.$inter;}
    else {$infosconf="Vous n'avez coché aucun renseignement. Merci de recommencer la procédure de réinscription.".$eol; $infos="N'a coché aucun renseignement !!".$eol; }
    }
    $msg = "Nom & Prénom : $nom ".$eol;
    $msg .= "E-Mail : $email ".$eol;
    $msg .= "Portable : $portable ".$eol;
    $msg .= "Adresse : $adresse ".$eol;
    $msgconf="Mail de confirmation.".$eol.$eol;
    if($stop) $msgconf.="Nous vous confirmons réception de votre demande de non réinscription.".$eol.$eol;
    else $msgconf.="Nous vous confirmons réception de votre demande de réinscription avec les données suivantes:".$eol.$eol;
    $msgconf.=$msg.$infosconf.$eol;
    $msg .= $infos.$eol;
    if($stop) $subject = "Demande de non renouvellement de Licence de : $nom";
    else  $subject = "Demande de renouvellement de Licence de : $nom";
    if($stop) $subjectconf="Confirmation de demande de non renouvellement de Licence.";
    else  $subjectconf="Confirmation de demande de renouvellement de Licence.";
    $headers = 'MIME-Version: 1.0'.$eol;
    $headers .= 'From: '.$nom.'<'.$email.'>'.$eol;
    $headers .= 'Reply-To: '.$email.$eol;
    $headers .= 'Date: '.$date.$eol;
    $headers .= "Message-ID: <TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
    $headers .= "X-Mailer: PHP v".$phpversion.$eol;
    $headersconf = 'MIME-Version: 1.0'.$eol;
    $headersconf .= 'From: SarrebougTT<'.$to.'>'.$eol;
    $headersconf .= 'Reply-To: '.$to.$eol;
    $headersconf .= 'Date: '.$date.$eol;
    $headersconf .= "Message-ID: <TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
    $headersconf .= "X-Mailer: PHP v".$phpversion.$eol;
    if($nom=="" || $email=="") {
    echo "<HTML><HEAD>";
    echo "<TITLE>Message NON Envoyé !</TITLE></HEAD><BODY>";
    echo "<H1 align=center>ERREUR</H1>";
    echo "<P align=center>";
    echo "Votre message n'a pu être envoyé faute de nom et/ou d'adresse mail.<br>Merci de recommencer<br>";
    echo "<font size='12'><a href='Http://sarrebourgtt.free.fr/Script/InscriptionSTT.html'>Retour</a></font></P>";
    echo "</BODY></HTML>";
    }else if(mail($to,$subject,$msg,$headers)) {
    mail($email,$subjectconf,$msgconf,$headersconf);
    echo "<HTML><HEAD>";
    echo "<TITLE>Message Envoyé !</TITLE></HEAD><BODY>";
    echo "<H1 align=center>Merci !</H1>";
    echo "<P align=center>";
    echo "Votre message a été envoyé avec succès. Vous allez recevoir un mail de confirmation.</P>";
    echo "</BODY></HTML>";
    }else{
    echo "<HTML><HEAD>";
    echo "<TITLE>Message NON Envoyé !</TITLE></HEAD><BODY>";
    echo "<H1 align=center>ERREUR</H1>";
    echo "<P align=center>";
    echo "Le mail n´a pas pu être envoyé, il y a une erreur !!<br>Merci de recommencer.<br>";
    echo "<font size='12'><a href='Http://sarrebourgtt.free.fr/Script/InscriptionSTT.html'>Retour</a></font></P>";
    echo "</BODY></HTML>";
    }?>

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faudrait présenter proprement ton code avec des indentations parce que là c'est illisible.

    Fait un petit debugage pour commencer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    error_reporting(E_ALL);
    if (move_uploaded_file($_FILES['monfichier']['tmp_name'], 'upload/' . basename($_FILES['monfichier']['name']))) {
       echo 'déplacement ok';
    }
    else {
       echo 'déplacement ko';
    }

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    merci mais je suis pas un spécialiste !!
    a quel ligne insert tu ce code ?

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    À la place de celle ou il y a déjà le move_uploaded_file

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    ok

Discussions similaires

  1. [AC-2007] Comment convertir une piece jointe en adresse pour un tranfert de données
    Par Hervé40 dans le forum VBA Access
    Réponses: 0
    Dernier message: 28/09/2009, 21h25
  2. Piece jointe pour un document
    Par koifran dans le forum SharePoint
    Réponses: 1
    Dernier message: 28/05/2009, 16h53
  3. Réponses: 12
    Dernier message: 10/11/2008, 10h14
  4. Piece jointe pour un e-mail
    Par Michel DELAVAL dans le forum Access
    Réponses: 1
    Dernier message: 23/06/2006, 09h38
  5. [VB] Probleme pour recuperer pieces jointes d'outlook
    Par eown dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/04/2006, 09h26

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