envoyer 2 fichiers par un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : envoyer 2 fichiers par un formulaire

Re: envoyer 2 fichiers par un formulaire

par gilledunord » 13 oct. 2009, 11:36

Bonjour
Merci stopher.
ça ne marche pas, j'ai toujours un seul fichier dans ma boite mail.

Merci fuZZyline.
J'ai du changé le <? Par <?php car ça ne marchais pas.
Le problème est que ça envoi dans un répertoire, j'ai essayé de diriger par mail dans ma boite mais rien.

Que dois-je changer pour que ça parte dans ma boite mail ?
Merci à vous deux pour votre.
Cordialement
Gilledunord

Code : Tout sélectionner

<? /* variables à modifier */ $taillemax = 512000; // taille max d'un fichier (multiple de 1024) $filetype = "(jpeg|gif)"; // types de fichiers acceptés, séparés par | $nametype = "(.jpeg|.jpg|.gif)"; // extensions correspondantes $rep = "upload/"; // répertoire de destination $maxfichier = 10; // nombre maximal de fichiers /* fin des modifications */ // fichier courant (URI absolue) : formulaire récursif $PHP_SELF = basename($_SERVER['PHP_SELF']); if($_POST) { $msg = array(); // message $fichier = $_FILES['lefichier']; // simplication du tableau $_FILES for($i=0; $i<count($fichier['name']); $i++) { // nom du fichier original = nom par défaut $nom = $fichier['name'][$i]; // test existence fichier if(!strlen($nom)) { $msg[] = "Aucun fichier !"; continue; } // si un nouveau nom est renseigné (avec extension correcte) if(eregi($nametype, $_POST['lenom'][$i])) $nom = $_POST['lenom'][$i]; // répertoire de destination $destination = $rep.$nom; // test erreur (PHP 4.3) if($fichier['error'][$i]) { switch($fichier['error'][$i]) { // dépassement de upload_max_filesize dans php.ini case UPLOAD_ERR_INI_SIZE: $msg[] = "Fichier trop volumineux !"; break; // dépassement de MAX_FILE_SIZE dans le formulaire case UPLOAD_ERR_FORM_SIZE: $msg[] = "Fichier trop volumineux (supérieur à ".(INT)($taillemax/1024)." Mo)"; break; // autres erreurs default: $msg[] = "Impossible d'uploader le fichier !"; } } // test taille fichier elseif($fichier['size'][$i] > $taillemax) $msg[] = "Fichier $nom trop volumineux : ".$fichier['size'][$i]; // test type fichier elseif(!eregi($filetype, $fichier['type'][$i])) $msg[] = "Fichier $nom de type incorrect : ".$fichier['type'][$i]; // test upload sur serveur (rep. temporaire) elseif(!@is_uploaded_file($fichier['tmp_name'][$i])) $msg[] = "Impossible d'uploader $nom"; // test transfert du serveur au répertoire elseif(!@move_uploaded_file($fichier['tmp_name'][$i], $destination)) $msg[] = "Problème de transfert avec $nom"; else $msg[] = "Fichier <b>$nom</b> téléchargé avec succès !"; } // affichage confirmation for($i=0; $i<=count($msg); $i++) echo "<p>$msg[$i]</p>"; } // 1 fichier par défaut (ou supérieur à $maxfichier) $upload = (isset($_REQUEST['upload']) && $_REQUEST['upload'] <= $maxfichier) ? $_REQUEST['upload'] : 1; // choix du nombre $upload de fichier(s) echo "<form action='$PHP_SELF' method='post'>\n"; echo "Quantité <select name='upload' onChange=\"window.open(this.options[this.selectedIndex].value,'_self')\">\n"; for($i=1; $i<=$maxfichier; $i++) { echo "<option value='$PHP_SELF?upload=$i'"; if($i == $upload) echo " selected"; echo ">$i\n"; } echo "</select>\n"; echo "<input name='upload' value='$upload' size='3'>\n"; echo "<input type='submit' value='Modifier'></form>\n"; // le formulaire echo "<form action='$PHP_SELF' enctype='multipart/form-data' method='post'>\n"; // boucle selon nombre de fichiers $upload for($i=1; $i<=$upload; $i++) { echo "<p>Nom $i <input name='lenom[]'>\n"; echo "<input type='hidden' name='MAX_FILE_SIZE' value='$taillemax'>"; echo "Fichier <input type='file' name='lefichier[]'></p>\n"; } ?> <input type='submit' value='Envoyer'> </form> </body> </html>

Re: envoyer 2 fichiers par un formulaire

par stopher » 12 oct. 2009, 16:32

Slt ,

Pour tes essais :

Ca c'est bon

Code : Tout sélectionner

<input type=FILE name="fichier[]"> <input type=FILE name="fichier[]"> <input type=FILE name="fichier[]">
Niveau php pour les récupérer , tu fais comme ceci :
$_FILES['fichier']['name'][0]
$_FILES['fichier']['name'][1]
$_FILES['fichier']['name'][2]
Good luck ,
Ch.

Re: envoyer 2 fichiers par un formulaire

par FuZZyLine » 12 oct. 2009, 14:18

Salut,
Bonjour
Je ne suis ni novice ni pro, donc je ne sais pas ou mettre mon message.
En fait je suis incapable de créé un script mais j'arrive à assemblés ceux que je trouve pour mes besoins personnel.
Pour cette fois je n'arrive pas à envoyer deux, voir trois fichiers en même temps à partir d'un formulaire, et que les fichiers arrivent dans ma boite mail.
je mets trois <input type="file" name=" fichier"> mais je ne reçois qu'un fichier.
Merci pour votre aide.
Cordialement
Gilledunord
[...]
Qui dit multi-files dit tableau: Le préciser dans l'entête du formulaire et Indexer les variables envoyées.

Demonstration/Exemple:
http://dev.ppan.net/transfert-de-fichie ... ltiple.php

@+ bon code ;).

envoyer 2 fichiers par un formulaire

par gilledunord » 12 oct. 2009, 12:47

Bonjour
Je ne suis ni novice ni pro, donc je ne sais pas ou mettre mon message.
En fait je suis incapable de créé un script mais j'arrive à assemblés ceux que je trouve pour mes besoins personnel.

Pour cette fois je n'arrive pas à envoyer deux, voir trois fichiers en même temps à partir d'un formulaire, et que les fichiers arrivent dans ma boite mail.
je mets trois <input type="file" name=" fichier"> mais je ne reçois qu'un fichier.
Merci pour votre aide.
Cordialement
Gilledunord

mes essais:
<input type=FILE name="fichier1">
<input type=FILE name="fichier2">
<input type=FILE name="fichier3">

<input type=FILE name="fichier[]">
<input type=FILE name="fichier[]">
<input type=FILE name="fichier[]">

<input type=FILE name="fichier[1]">
<input type=FILE name="fichier[2]">
<input type=FILE name="fichier[3]">
Mon formulaire :
<form action="mail.php" method="POST" enctype="multipart/form-data">
<input type=FILE name="fichier">
<input type=FILE name="fichier">
<input type=FILE name="fichier">
<input type="submit" name="go" value="ENVOYER">
</form>
Fichier php pour l'envoi :
<?php

$name_file = $_FILES['fichier']['name']; 
$source=$_FILES['fichier']['tmp_name'];

move_uploaded_file($source, "./".$name_file); 

$extension=get_extension($name_file);

{
$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 .= $_POST['formulaire']; $msg .= $now = date("d/m/Y à H:i");
$msg .= "\r\n";
$msg .= "\r\n";
$msg .= 'message perso';
$msg .= "\r\n";

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 = '[email protected]';
$expediteur   = $_POST['titre'];
$reponse      = $expediteur;

mail($destinataire, $_POST['sujet'], $msg,
     "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);

}

if($name_file!="")
{
unlink($name_file);
}
?>