Page 1 sur 2

besoin d 'aide je suis perdu

Posté : 05 nov. 2011, 01:01
par petitemimine
Bonsoir

Je voudrais faire sur mon site un espace d'upload, afin de permettre aux membres de mon site de m'envoyer des images directement par un formulaire d'upload et de recevoir ces images par mail

un ami m'a fait un code et le système d'envoi de mail fonctionne donc jusque là tout va bien :priere:
Toutefois, celui ci n'est pas complet " manque la limitation de taille de l'image, et l'image n'est pas renommée donc risque de doublons et comme mon ami ne sera plsu disponible durant un bout de temps me voila coincé

Par contre j'ai fini par trouver un code qui regroupe tous les critères manquant, et j'arrive à le faire fonctionner mais il n'a pas la fonction d'envoi de mail avec pièce jointe :oops:

j'ai beau tourner ce code et la partie d'envoi mail de mon ami dans tous les sens, je n'arrive pas au bout de ce que je voudrais avoir
Je reçois bien le mail mais pas la pièce jointe

Du coup je me tourne vers vous pour avoir de l'aide
je désespéré totalement :(

voici le code d'upload

Code : Tout sélectionner

<?php $poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets) $repertoire = 'uploads/'; // Repertoire d'upload if (isset($_FILES['fichier'])) { // On vérifit le type du fichier if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif' && $_FILES['fichier']['type'] != 'image/bmp' && $_FILES['fichier']['type'] != 'image/jpg') { $erreur = 'Le fichier doit être au format *.jpeg, *.bmp, *.jpg, *.png, *.gif ou *.png .'; } // On vérifit le poids de l'image elseif ($_FILES['fichier']['size'] > $poids_max) { $erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.'; } // On vérifit si le répertoire d'upload existe elseif (!file_exists($repertoire)) { $erreur = 'Erreur, le dossier d\'upload n\'existe pas.'; } // Si il y a une erreur on l'affiche sinon on peut uploader if(isset($erreur)) { echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>'; } else { // On définit l'extention du fichier puis on le nomme par le timestamp actuel if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; } if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; } if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.bmp'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.jpg'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.png'; } $nom_fichier = time().$extention; // On upload le fichier sur le serveur. if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier)) { $url = 'http://****************/chris/'.$repertoire.''.$nom_fichier.''; echo ' <p align="center"><br><b><center><font color=\"#0000CC">Votre image à été uploadée sur le serveur avec succes!</b></center></font></b></p> <div align="center"><br><br>Voici le lien: <br /> <br/> <img src="uploads/'.$nom_fichier.'" width="200px" height="200px" border="2px" /> <br /> <br/> <b>URL de votre image </b> <input type="text" size="100" value="'.$url.'" /><br /> <br /> <br /> <b>BBcode img</b> = <input type="text" size="100" value="[img]' . $url . '[/img]" /><br /> <br /> <br /> <b>Voici le code pour un forum : </b> = <input type="text" size="100" value="[url]' . $url . '[/url]" /><br /> <br /> <br /> <b>Voici le code pour votre site :</b> = <input type="text" size="200" value="<a href=' . $url . '><img src=' . $url . ' /></a>" /><br /> <br /> <br /></p></div> '; } else { echo 'L\'image n\'a pas pu être uploadée sur le serveur.'; } } } else { ?> <p>&nbsp;</p> <form method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $poids_max; ?>"> <input type="file" name="fichier"> <input type="submit" value="Envoyer"> </form> <?php } ?>

et voici le bout de code que mon ami m'a fait pour envoyer les pièces jointes ( version brut)

Code : Tout sélectionner

// Envoi du mail avec le fichier // Destinataire du mail $destination = "[email protected]"; // A CHANGER AVEC TON ADRESSE MAIL // Sujet du mail $sujet = "Nouvelle image uploadée"; // A CHANGER SI TU VEUX MODIFIER L'OBJET // Les headers pour un mail multiparts $headers= "MIME-Version: 1.0\n"; $headers.= "From: \"hebergeur image\" <[email protected]>\n"; // A CHANGER SI TU VEUX MODIFIER L'ADRESSE D'EXPEDITEUR $headers.= "Content-type: multipart/mixed;\n"; // Chaine permettant de différencier les différentes parties du mail $limite = '_parties_'.md5(uniqid (rand())); $headers.= " boundary=\"----=$limite\"\n\n"; // Première partie, corps du mail en HTML $texte = "------=$limite\n"; $texte.= "Content-type: text/html; charset=\"iso-8859-1\"\n\n"; $texte.="<HTML><HEAD></HEAD><BODY>Une nouvelle image a été uploadée sur le site !</BODY></HTML>"; // A CHANGER SI TU VEUX CHANGER LE TEXTE DU MAIL // Traitement pour attacher une PJ $fichier = 'uploads/'.$name_file; $contenu = file_get_contents($fichier); $attachement = "\n------=$limite\n"; // Traitement du type des images if($type_file=='jpg') $attachement .= "Content-Type: jpg; name=\"".$name_file."\"\n"; else if($type_file=='jpeg') $attachement .= "Content-Type: jpeg; name=\"".$name_file."\"\n"; else if($type_file=='bmp') $attachement .= "Content-Type: bmp; name=\"".$name_file."\"\n"; else if($type_file=='gif') $attachement .= "Content-Type: gif; name=\"".$name_file."\"\n"; else if($type_file=='png') $attachement .= "Content-Type: png; name=\"".$name_file."\"\n"; $attachement .= "Content-Transfer-Encoding: base64\n"; $attachement .= "Content-Disposition: attachment; filename=\"".$name_file."\"\n\n"; // On joint le fichier en l'encodant en base 64 $attachement .= chunk_split(base64_encode($contenu)); // On envoie le mail mail($destination, $sujet, $texte.$attachement, $headers);
pour moi cela merdouille a partir du Traitement pour attacher une PJ

mais je sais vraiment pas comment faire

Est ce que quelqu'un pourrais bien m'aider a adapter la 2eme partie en fonction de la 1ere ? :priere:

Merci de votre aide

Re: besoin d 'aide je suis perdu

Posté : 05 nov. 2011, 09:34
par xTG
L'envoi du mail doit se faire dans la condition de l'upload indiquant que ce dernier s'est bien déroulé.
Tu as $url qui est défini pour le lien vers le fichier.
Un simple copier/coller du script dans l'autre devrait fonctionner (et penser à renommer $url ou bien l'utiliser dans l'envoi de mail). :)

Re: besoin d 'aide je suis perdu

Posté : 05 nov. 2011, 12:40
par petitemimine
Bonjour
ma deuxième partie je la met bien dans la première juste à la fin
par contre tu me parle de $url mais cela ne sert pas à faire une pièce jointe si ?

Excuse mais je débute et je suis perdu

Re: besoin d 'aide je suis perdu

Posté : 05 nov. 2011, 13:38
par xTG
/ On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
{
$url = 'http://****************/chris/'.$repertoire.''.$nom_fichier.'';
Dans cette partie là tu y arrives lorsque le fichier est uploadé. $url est le lien vers le fichier en question.
Ce fichier tu souhaites le mettre en pièce jointe n'est-ce pas ?
La variable du script d'envoi du mail correspondante est $fichier.

Re: besoin d 'aide je suis perdu

Posté : 05 nov. 2011, 14:41
par petitemimine
Donc cela veux dire que
Re
donc si je te suit ( ce qui est pas sur a mon avis :oops: )
je dois remplacer ceci

// Traitement pour attacher une PJ
$fichier = 'uploads/'.$name_file;

par

// Traitement pour attacher une PJ
$fichier = $url

et tous les $name_fichier par $nom_fichier

C'est ça ?

sinon oui je voudrais recevoir l'image uploader en pièce jointe

Re: besoin d 'aide je suis perdu

Posté : 05 nov. 2011, 16:15
par sirakawa
C'est à dire, si je comprends bien, que:
l'utilisateur uploade lui-même l'image à partir d'une page de ton site à rédiger
ET
cette image t'est envoyée en plus par mail en fichier attaché

Re: besoin d 'aide je suis perdu

Posté : 05 nov. 2011, 21:48
par petitemimine
oui c'est cela Sirakawa

le 1er code concerne l upload
le 2eme l envoi du mail

mais j'arrive pas a combiner les 2 #-o

Re: besoin d 'aide je suis perdu

Posté : 06 nov. 2011, 12:45
par petitemimine
un petit up
s il vous plait :cry:

Re: besoin d 'aide je suis perdu

Posté : 06 nov. 2011, 13:08
par xTG
Que ne comprends-tu pas dans mon explication ?

Re: besoin d 'aide je suis perdu

Posté : 06 nov. 2011, 13:11
par moogli
Il faut mettre le code d'envoi du mail juste après la validation de l'upload ^^

Re: besoin d 'aide je suis perdu

Posté : 06 nov. 2011, 13:12
par petitemimine
ce que je t'ai répondu

c'est bon ou pas ?

je comprend pas l'imbrication des 2 parties et je sais pas trop quoi et ou modifier #-o

Re: besoin d 'aide je suis perdu

Posté : 06 nov. 2011, 13:51
par xTG
Si je n'ai rien apporté comme autres indications suite à ta réponse, pourquoi ne pas tester ? :)

Re: besoin d 'aide je suis perdu

Posté : 06 nov. 2011, 14:13
par petitemimine
j'ai essayé mais ca fonctionne pas

j'obtiens ça

Code : Tout sélectionner

<?php $poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets) $repertoire = 'uploads/'; // Repertoire d'upload if (isset($_FILES['fichier'])) { // On vérifit le type du fichier if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif' && $_FILES['fichier']['type'] != 'image/bmp' && $_FILES['fichier']['type'] != 'image/jpg') { $erreur = 'Le fichier doit être au format *.jpeg, *.bmp, *.jpg, *.png, *.gif ou *.png .'; } // On vérifit le poids de l'image elseif ($_FILES['fichier']['size'] > $poids_max) { $erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.'; } // On vérifit si le répertoire d'upload existe elseif (!file_exists($repertoire)) { $erreur = 'Erreur, le dossier d\'upload n\'existe pas.'; } // Si il y a une erreur on l'affiche sinon on peut uploader if(isset($erreur)) { echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>'; } else { // On définit l'extention du fichier puis on le nomme par le timestamp actuel if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; } if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; } if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.bmp'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.jpg'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.png'; } $nom_fichier = time().$extention; // On upload le fichier sur le serveur. if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier)) { $url = 'http://www.xxxxxxxxxxx.fr/chris/'.$repertoire.''.$nom_fichier.''; echo ' <p align="center"><br><b><center><font color=\"#0000CC">Votre image à été uploadée sur le serveur avec succes!</b></center></font></b></p> <div align="center"><br><br>Voici le lien: <br /> <br/> <img src="uploads/'.$nom_fichier.'" width="200px" height="200px" border="2px" /> <br /> <br/> <b>URL de votre image </b> <input type="text" size="100" value="'.$url.'" /><br /> <br /> <br /> <b>BBcode img</b> = <input type="text" size="100" value="[img]' . $url . '[/img]" /><br /> <br /> <br /> <b>Voici le code pour un forum : </b> = <input type="text" size="100" value="[url]' . $url . '[/url]" /><br /> <br /> <br /> <b>Voici le code pour votre site :</b> = <input type="text" size="200" value="<a href=' . $url . '><img src=' . $url . ' /></a>" /><br /> <br /> <br /></p></div> '; } else { echo 'L\'image n\'a pas pu être uploadée sur le serveur.'; } } } else { ?> <p>&nbsp;</p> <form method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $poids_max; ?>"> <input type="file" name="fichier"> <input type="submit" value="Envoyer"> </form> <?php // Envoi du mail avec le fichier // Destinataire du mail $destination = "[email protected]"; // A CHANGER AVEC TON ADRESSE MAIL // Sujet du mail $sujet = "Nouvelle image uploadée"; // A CHANGER SI TU VEUX MODIFIER L'OBJET // Les headers pour un mail multiparts $headers= "MIME-Version: 1.0\n"; $headers.= "From: \"hebergeur image\" <[email protected]>\n"; // A CHANGER SI TU VEUX MODIFIER L'ADRESSE D'EXPEDITEUR $headers.= "Content-type: multipart/mixed;\n"; // Chaine permettant de différencier les différentes parties du mail $limite = '_parties_'.md5(uniqid (rand())); $headers.= " boundary=\"----=$limite\"\n\n"; // Première partie, corps du mail en HTML $texte = "------=$limite\n"; $texte.= "Content-type: text/html; charset=\"iso-8859-1\"\n\n"; $texte.="<HTML><HEAD></HEAD><BODY>Une nouvelle image a été uploadée sur le site !</BODY></HTML>"; // A CHANGER SI TU VEUX CHANGER LE TEXTE DU MAIL // Traitement pour attacher une PJ $fichier = $url $contenu = file_get_contents($fichier); $attachement = "\n------=$limite\n"; // Traitement du type des images if($type_file=='jpg') $attachement .= "Content-Type: jpg; name=\"".$nom_fichier."\"\n"; else if($type_file=='jpeg') $attachement .= "Content-Type: jpeg; name=\"".$nom_fichier."\"\n"; else if($type_file=='bmp') $attachement .= "Content-Type: bmp; name=\"".$nom_fichier."\"\n"; else if($type_file=='gif') $attachement .= "Content-Type: gif; name=\"".$nom_fichier."\"\n"; else if($type_file=='png') $attachement .= "Content-Type: png; name=\"".$nom_fichier."\"\n"; $attachement .= "Content-Transfer-Encoding: base64\n"; $attachement .= "Content-Disposition: attachment; filename=\"".$nom_fichier."\"\n\n"; // On joint le fichier en l'encodant en base 64 $attachement .= chunk_split(base64_encode($contenu)); // On envoie le mail mail($destination, $sujet, $texte.$attachement, $headers); } ?>
j'obitnes une erreur a cette ligne là

Code : Tout sélectionner

// Traitement pour attacher une PJ $fichier = $url $contenu = file_get_contents($fichier); $attachement = "\n------=$limite\n";
la 2eme

et si je met la partie d envoi du mail juste après

Code : Tout sélectionner

$url = 'http://www.xxxxxxxxxxx.fr/chris/'.$repertoire.''.$nom_fichier.''; echo '


'jai une erreur a cette ligne là

$sujet = "Nouvelle image uploadée";


franchement je suis totalement perdu

tu vois le code comment toi ?

Re: besoin d 'aide je suis perdu

Posté : 06 nov. 2011, 14:15
par xTG
Le code n'est pas placé au bon endroit.
Voir plus haut un autre de mes messages :
/ On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
{
$url = 'http://****************/chris/'.$repertoire.''.$nom_fichier.'';
Dans cette partie là tu y arrives lorsque le fichier est uploadé. $url est le lien vers le fichier en question.
Ce fichier tu souhaites le mettre en pièce jointe n'est-ce pas ?
La variable du script d'envoi du mail correspondante est $fichier.

Re: besoin d 'aide je suis perdu

Posté : 06 nov. 2011, 14:39
par petitemimine
oui

j ai essayer aussi mais ca ne fonctionne pas et comme je disais j'ai dans ce cas là une erreur à la ligne 61

soit ici $sujet = "Nouvelle image uploadée

Code : Tout sélectionner

<?php $poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets) $repertoire = 'uploads/'; // Repertoire d'upload if (isset($_FILES['fichier'])) { // On vérifit le type du fichier if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif' && $_FILES['fichier']['type'] != 'image/bmp' && $_FILES['fichier']['type'] != 'image/jpg') { $erreur = 'Le fichier doit être au format *.jpeg, *.bmp, *.jpg, *.png, *.gif ou *.png .'; } // On vérifit le poids de l'image elseif ($_FILES['fichier']['size'] > $poids_max) { $erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.'; } // On vérifit si le répertoire d'upload existe elseif (!file_exists($repertoire)) { $erreur = 'Erreur, le dossier d\'upload n\'existe pas.'; } // Si il y a une erreur on l'affiche sinon on peut uploader if(isset($erreur)) { echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>'; } else { // On définit l'extention du fichier puis on le nomme par le timestamp actuel if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; } if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; } if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.bmp'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.jpg'; } if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.png'; } $nom_fichier = time().$extention; // On upload le fichier sur le serveur. if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier)) { $url = 'http://www.xxxxxxxxxxx.fr/chris/'.$repertoire.''.$nom_fichier.''; echo ' // Envoi du mail avec le fichier // Destinataire du mail $destination = "[email protected]"; // A CHANGER AVEC TON ADRESSE MAIL // Sujet du mail $sujet = "Nouvelle image uploadée"; // A CHANGER SI TU VEUX MODIFIER L'OBJET // Les headers pour un mail multiparts $headers= "MIME-Version: 1.0\n"; $headers.= "From: \"hebergeur image\" <[email protected]>\n"; // A CHANGER SI TU VEUX MODIFIER L'ADRESSE D'EXPEDITEUR $headers.= "Content-type: multipart/mixed;\n"; // Chaine permettant de différencier les différentes parties du mail $limite = '_parties_'.md5(uniqid (rand())); $headers.= " boundary=\"----=$limite\"\n\n"; // Première partie, corps du mail en HTML $texte = "------=$limite\n"; $texte.= "Content-type: text/html; charset=\"iso-8859-1\"\n\n"; $texte.="<HTML><HEAD></HEAD><BODY>Une nouvelle image a été uploadée sur le site !</BODY></HTML>"; // A CHANGER SI TU VEUX CHANGER LE TEXTE DU MAIL // Traitement pour attacher une PJ $fichier = $url $contenu = file_get_contents($fichier); $attachement = "\n------=$limite\n"; // Traitement du type des images if($type_file=='jpg') $attachement .= "Content-Type: jpg; name=\"".$nom_fichier."\"\n"; else if($type_file=='jpeg') $attachement .= "Content-Type: jpeg; name=\"".$nom_fichier."\"\n"; else if($type_file=='bmp') $attachement .= "Content-Type: bmp; name=\"".$nom_fichier."\"\n"; else if($type_file=='gif') $attachement .= "Content-Type: gif; name=\"".$nom_fichier."\"\n"; else if($type_file=='png') $attachement .= "Content-Type: png; name=\"".$nom_fichier."\"\n"; $attachement .= "Content-Transfer-Encoding: base64\n"; $attachement .= "Content-Disposition: attachment; filename=\"".$nom_fichier."\"\n\n"; // On joint le fichier en l'encodant en base 64 $attachement .= chunk_split(base64_encode($contenu)); // On envoie le mail mail($destination, $sujet, $texte.$attachement, $headers); <p align="center"><br><b><center><font color=\"#0000CC">Votre image à été uploadée sur le serveur avec succes!</b></center></font></b></p> <div align="center"><br><br>Voici le lien: <br /> <br/> <img src="uploads/'.$nom_fichier.'" width="200px" height="200px" border="2px" /> <br /> <br/> <b>URL de votre image </b> <input type="text" size="100" value="'.$url.'" /><br /> <br /> <br /> <b>BBcode img</b> = <input type="text" size="100" value="[img]' . $url . '[/img]" /><br /> <br /> <br /> <b>Voici le code pour un forum : </b> = <input type="text" size="100" value="[url]' . $url . '[/url]" /><br /> <br /> <br /> <b>Voici le code pour votre site :</b> = <input type="text" size="200" value="<a href=' . $url . '><img src=' . $url . ' /></a>" /><br /> <br /> <br /></p></div> '; } else { echo 'L\'image n\'a pas pu être uploadée sur le serveur.'; } } } else { ?> <p>&nbsp;</p> <form method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $poids_max; ?>"> <input type="file" name="fichier"> <input type="submit" value="Envoyer"> </form> <?php } ?>