1 Dernière modification par gilledunord (14-10-2009 14:12:07)

Sujet : [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Bonjour

Depuis un formulaire j'essaye d'envoyé 3 fichiers pour les recevoir dans ma boite mail mais je n'en reçois qu'un.
Quelqu'un peut t-il m'aider ?

Le formulaire :

<form method="POST" action="mail.php" enctype="multipart/form-data">
        <input type="file" name="fichier">
        <input type="file" name="fichier">
        <input type="file" name="fichier">
<input type="submit" name="envoyer" value="Poster"></p>
</form>

le fichier php :

<?php
 
$name_file = ($_FILES['fichier']['name']);
$source = ($_FILES['fichier']['tmp_name']);
 
move_uploaded_file($source, "./".$name_file);
 
$extension=get_extension($name_file);
 
$type="text/plain";
if($type=="doc")
{
   $type="text/vnd.ms-word";
}
else if($type=="xls")
{
   $type="text/vnd.ms-excel";
}
 
$type2="image/png";
 
if($extension=="gif")
{
   $type2="image/gif";
}
else if($extension=="bmp")
{
   $type2="image/bmp";
}
 
function get_extension($filename)
{
   $parts = explode('.',$filename);
   $last = count($parts) - 1;
   $ext = $parts[$last];
   return $ext;
}
 
{
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
 
$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
 
$msg .= "--$boundary\r\n";
 
$msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
 
$msg .= "ici la page en htm";
 
if($name_file!="")
{
$file = $name_file;
$fp = fopen($file, "rb"); 
$attachment = fread($fp, filesize($file));
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
 
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type2; name=\"$file\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";
}
 
$destinataire = 'monmail@sfr.fr';
$expediteur = 'Formulaire_de_mon_site';
$sujet = 'Mons site';
$reponse = $expediteur;
 
mail($destinataire,$sujet,$msg,
     "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
}
 
if($name_file!="")
{
unlink($name_file);
}
 
?>

mes essais :

<input name="fichier" type="file" />
<input name="fichier" type="file" />
<input name="fichier" type="file" />
puis
<input name="fichier1" type="file" />
<input name="fichier2" type="file" />
<input name="fichier3" type="file" />
puis
<input name="fichier[]" type="file" />
<input name="fichier[]" type="file" />
<input name="fichier[]" type="file" />
puis
<input name="fichier[1]" type="file" />
<input name="fichier[2]" type="file" />
<input name="fichier[3]" type="file" />

Je n'ai pas de déclaration d'erreur et je ne reçois qu'un seul fichier.
Regardé plusieurs forums qui indiquent de mettre la dernière version mais ça ne marche pas, ni en local avec WampServer2 ni sur un hébergeur.

Cordialement
Gilledunord

2

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Bonsoir,

Je ne comprends pas comment tu veux gérer 3 fichiers différents quand ton code ne travaille que sur 1 fichier (aucune boucle ou moyen de lire les différents fichiers uploadés via $_FILES).

D'autres parties du code m'épatent aussi:

$type="text/plain";
if($type=="doc")
{
lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Bonjour toad

Le code php je l'ai en fait bidouillé avec des morceaux que j'ai trouvés.
J'ai fait plusieurs forums et ai trouvé divers codes mais aucun ne fonctionne, que se soit en local avec WampServer2 ou en ligne.

Sur le "siteduzéro" il présente un formulaire que pour un fichier, en disant que l'on peut ajouter autant de <input type="file" que l'on voulait, oui mais comment ?

J'avais une idée simple s'est de doublé le script mais le problème s'est que ça envoi en 2 fois mais séparément, alors que je voudrais les données du formulaire avec les deux fichiers envoyés, et ça dans ma boite, pas dans un répertoire.

N'aurait tu pas un script pour au moins envoyer deux fichiers ?

Merci pour ton aide

Cordialement
Gilledunord

4

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Honnêtement la seule aide dont tu es besoin est celle ci:
1/ apprends à découvrir la variable globale $_FILES (fais un echo '<pre>', print_r($_FILES, true),'</pre>'; si besoin)
2/ regarde du coté de foreach pour faire une boucle sur les différents éléments de $_FILES (http://sk.php.net/foreach peut être)

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Bonjour toad

Une chose qu'il faut savoir, quand on se dit novice (je parle de moi) cela veut dire novice.

Donc je m'arréte là...

Cordialement
Gilledunord

6

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Il ne faut pas s'énerver, Toad t'as donner les éléments nécessaires,  Il faut juste chercher un peu. Tu verras si tu y arrives tu seras encore plus fière de toi, et tu auras appris plein de chose.
Ca rappel le proverbe. Donne du poisson à quelqu'un, tu le nourriras une journée, apprend lui à pêcher tu le nourris pour la vie.
Foreach -> http://fr2.php.net/manual/fr/control-st … oreach.php
$_FILES -> http://fr.php.net/manual/fr/features.fi … method.php

Ce qui donne vite fait:

$uploaddir = '/var/www/uploads/';
 
foreach ($_FILES as $file) {
  $uploadfile = $uploaddir . basename($file['userfile']['name']);
 
  echo '<pre>';
  if (move_uploaded_file($file['userfile']['tmp_name'], $uploadfile)) {
    echo "Le fichier est valide, et a été téléchargé
           avec succès. Voici plus d'informations :\n"
;
  } else {
    echo "Attaque potentielle par téléchargement de fichiers.
          Voici plus d'informations :\n"
;
  }
 
  echo 'Voici quelques informations de débogage :';
  print_r($file);
 
  echo '</pre>';
}

Y'a plus qu'a adapter. Je te conseille vivement de lire le phpManual il est super bien fait et presque agréable à lire. Si tout les manuels de langage étaient comme lui, l'informatique serait simple.

7

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

N'oubliez pas d'utiliser [ code=php ] pour highlighter votre code php smile
Sinon Madmax, je pense que tu as trop mâché le travail smile Et c'est quoi ce message d'Attaque potentielle ? smile

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

8

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Ah ouais pas mal le [ code=php ].
C'est vrai que c'est un gros coup de pouces, mais je le sentait prêt à abandonner. C'était pour le relancer.

9

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Salut,

J'ai trouvé ceci : Upload

Voir le tutoriel : Gestionnaire d'upload de fichier en PHP

Je n'ai pas testé mais ce script me semble très intéressant...

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Bonjour

Merci à tous pour vos soutiens...

Me suis peut être mal exprimé...
Je ne veux pas que les fichiers soit mis dans un répertoire, ni ne veux pas être obligeais de venir les chercher sur mon site.

Simplement les recevoirs dans ma boite mail, et c'est la que ça coince...

Dans mon premier message ou j'ai mis le script, sur les 3 envoi de fichier, j'en reçois un seul dans ma boite et les deux autres sont envoyé dans le répertoire qui contient le script.

Je voudrais recevoir les 3 dans ma boite.

J'ai essayer beaucoup de scripts dont ceux des sites que vous proposez mais ils envoient dans un répertoire et je n'en veux pas !

Avez vous essayer vous même d'envoyer 2 ou 3  fichiers dans votre boite ?

Cordialement
Gilledunord

11

Re: [cloturé par gilledunord] Envoi de 3 fichier par formulaire

Non je n'ai jamais essayé. Mais avec le script que j'ai mis plus haut. Dans le Foreach, au lieu de copier dans un dossier, tu envoies un mail. Ou si tu veux tout dans le même mail. Tu ajoutes des fichiers dans le mails à chaque boucle de foreach et tu l'envoies. J'ai jamais envoyé de pieces jointes en php. je ne peux pas trop t'aider. Mais je pense que tu ne doit pas en etre loin