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 :

problème mailing fichier [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut problème mailing fichier
    salut à tous,
    j'ai un problème, quand j'envoie un fichier a un email le serveur me donne ce code :


    Warning: file_get_contents(CV_blabla.pdf) [function.file-get-contents]: failed to open stream: No such file or directory in /homepages/5/d391037984/htdocs/msb/cible.php on line 118
    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
    <?php
    if( isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['message'])){
    	//valider le sujet
    	if( empty($_POST['subject'])){
    	$errors[] = "s'il vous plait entrer un sujet.";
    	}else{
    		$subject = htmlentities($_POST['subject']);
    	}
    	// valider email 
    	if( empty($_POST['email'])){
    		$errors[] = "s'il vous plait entrer un email.";
    	}elseif(strlen($_POST['email']) >347 ){
    		$errors[] = "l'adresse est long !! s'il vous plait entrer un valid email.";
    	}elseif(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) == false ){
    		$errors[] = "s'il vous plait entrer un valid email !!.";
    	}else{
    	$email = "<".htmlentities($_POST['email']).">";
    	}
    	//valider reception
    	$recept = "<blabla@blabla.com>";
    	//valider le msg
    	if( empty($_POST['message'])){
    		$errors[] = "s'il vous plait entrer un message.";
    	}else{
    		$message = htmlentities($_POST['message']);
    	}
    }
     
    //test de validation de fichier 
    if( isset($_FILES['cv']) AND $_FILES['cv']['error'] == 0) {
    	if( $_FILES['cv']['size'] <= 1000000 ){
    		$info = pathinfo($_FILES['cv']['name']);
    		$extention_upload = $info['extension'];
    		$extention_autoriser = array('doc', 'docx', 'pdf');
    		if( in_array($extention_upload, $extention_autoriser)){
    			$nomfichier =$_FILES['cv']['name'];
     
     
     
    			//*****************************************************
     
    function mailfichier($email, $recept, $subject, $message, $nomfichier) {
      // generation du separateur, une chaine aleatoire fait l'affaire
      $bound = '------------'.md5(uniqid('toto'));
     
      $entete = 'From: '.$email."\n"
        .'MIME-Version: 1.0'."\n"
        .'Content-Type: multipart/mixed;'."\n"
        .' boundary="'.$bound.'"';
     
      $message = 'This is a multi-part message in MIME format.'."\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain; charset=ISO-8859-1'."\n"
        .'Content-Transfer-Encoding: 7bit'."\n\n"
        .$message
        ."\n\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain;'."\n".' name="'.basename($nomfichier).'"'."\n"
        .'Content-Transfer-Encoding: base64'."\n"
        .'Content-Disposition: attachment;'."\n".' filename="'.basename($nomfichier).'"'."\n\n"
        .chunk_split(base64_encode(file_get_contents($nomfichier)))
        .'--'.$bound.'--'."\n";
     
      return @mail($recept, $subject, $message, $entete);
    }
     
    			mailfichier($email, $recept, $subject, $message, $nomfichier);
     
    		}
     
    	}
    }
     
    ?>

  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 fichier uploadé c'est $_FILES['cv']['tmp_name'] ; $_FILES['cv']['name'] c'est uniquement le nom du fichier d'origine.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut merci
    oui ça marche mais le problème c'est que , moi j'envoie un pdf, et dans le message que j'ai reçu un fichier.txt avec des chiffres ?
    et quand je modifie l'extension de fichier reçu au pdf ça marche !!

  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
    Le "name" c'est $_FILES['cv']['name']et le "filename" c'est $_FILES['cv']['tmp_name']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    oui, je compris , mais ce que je veux vous dire c'est que le serveur envoi un fichier sans extension, par contre moi je remplis la formulaire avec un fichier.pdf
    le nom du fichier qu'il envoi : phpJDg1gm
    le message que j'ai reçu :
    Fichiers attachés
    Images attachées Images attachées  

  6. #6
    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
    C'est justement parce que tu utilises le tmp_name à l'endroit il faudrait utiliser le name
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    s'il vous plait vous pouvez m'expliquer car j'ai pas bien compris ??
    voici le code :
    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
     
    if( isset($_FILES['cv']) AND $_FILES['cv']['error'] == 0) {
    	if( $_FILES['cv']['size'] <= 1000000 ){
    		$info = pathinfo($_FILES['cv']['name']);
    		$extention_upload = $info['extension'];
    		$extention_autoriser = array('doc', 'docx', 'pdf');
    		if( in_array($extention_upload, $extention_autoriser)){
    			$nomfichier =$_FILES['cv']['tmp_name'];
    function mailfichier($email, $recept, $subject, $message, $nomfichier) {
      // generation du separateur, une chaine aleatoire fait l'affaire
      $bound = '------------'.md5(uniqid('toto'));
     
      $entete = 'From: '.$email."\n"
        .'MIME-Version: 1.0'."\n"
        .'Content-Type: multipart/mixed;'."\n"
        .' boundary="'.$bound.'"';
     
      $message = 'This is a multi-part message in MIME format.'."\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain; charset=ISO-8859-1'."\n"
        .'Content-Transfer-Encoding: 7bit'."\n\n"
        .$message
        ."\n\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain;'."\n".' name="'.basename($nomfichier).'"'."\n"
        .'Content-Transfer-Encoding: base64'."\n"
        .'Content-Disposition: attachment;'."\n".' filename="'.basename($nomfichier).'"'."\n\n"
        .chunk_split(base64_encode(file_get_contents($nomfichier)))
        .'--'.$bound.'--'."\n";
     
      return @mail($recept, $subject, $message, $entete);
    }
     
    			mailfichier($email, $recept, $subject, $message, $nomfichier);
     
     
    		}
     
    	}
    }
    c'est comme vous m'avez dit !!

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut merci à tous
    grâce a vous j'ai trouvé la solution, bon si quelqu'un veux la solution c'est :

    comme m'a dit
    le Modérateur
    que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_FILES['nom_fichier']['tmp_name']
    renvoi le fichier, par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_FILES['nom_fichier']['name']
    renvoi juste le nom.
    alors la solution consiste a envoyer les deux à la fonction c'est comme ceci :
    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
     
     
    if( isset($_FILES['cv']) AND $_FILES['cv']['error'] == 0) {
    	if( $_FILES['cv']['size'] <= 1000000 ){
    		$info = pathinfo($_FILES['cv']['name']);
    		$extention_upload = $info['extension'];
    		$extention_autoriser = array('doc', 'docx', 'pdf');
    		if( in_array($extention_upload, $extention_autoriser)){
     
    			$nomfichier =$_FILES['cv']['name'];
    			$fichiertmp = $_FILES['cv']['tmp_name'];
     
    function mailfichier($email, $recept, $subject, $message, $nomfichier, $fichiertmp) {
      // generation du separateur, une chaine aleatoire fait l'affaire
      $bound = '------------'.md5(uniqid('toto'));
     
      $entete = 'From: '.$email."\n"
        .'MIME-Version: 1.0'."\n"
        .'Content-Type: multipart/mixed;'."\n"
        .' boundary="'.$bound.'"';
     
      $message = 'This is a multi-part message in MIME format.'."\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain; charset=ISO-8859-1'."\n"
        .'Content-Transfer-Encoding: 7bit'."\n\n"
        .$message
        ."\n\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain;'."\n".' name="'.basename($nomfichier).'"'."\n"
        .'Content-Transfer-Encoding: base64'."\n"
        .'Content-Disposition: attachment;'."\n".' filename="'.basename($nomfichier).'"'."\n\n"
        .chunk_split(base64_encode(file_get_contents($fichiertmp)))
        .'--'.$bound.'--'."\n";
     
      return @mail($recept, $subject, $message, $entete);
    }
    			mailfichier($email, $recept, $subject, $message, $nomfichier, $fichiertmp);
    		}
    	}
    }
    merci groupe developpez.net !! ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Delphi 3] Problème avec fichier ressource .RES
    Par delphim dans le forum EDI
    Réponses: 2
    Dernier message: 28/06/2005, 18h11
  2. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17
  3. Problème lecture fichier en C++
    Par cali1983 dans le forum C++
    Réponses: 17
    Dernier message: 20/05/2005, 09h36
  4. Problème ouverture fichier par double clic...
    Par sankookai dans le forum MFC
    Réponses: 4
    Dernier message: 11/05/2005, 09h13
  5. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17

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