8768 sujets

Développement web côté serveur, CMS

Bonjours à tous,

Je suis débutant en php, et j'aurai besoin de votre aide:

Je cherche a réalisée un formulaire de contact et la possibilité de joindre un fichier image.

J'aimerai que l'image qui est joins arrive dans un dossier sur mon serveur le nom de mon dossier s'appel ulpoad_image

après plusieurs recherche sur le web beaucoup de personne recommande phpmailer
Mais je bloque également sur certaine fonction.

en gros je reçois le mail mais il est vide pk ?

et par la même occasion je ne reçois pas le fichier

alors je cherche une personne qui serai capable de me conseiller, voir de me corriger sa serai super, je ne cherche pas de code tous fait mais des conseils utile pour avancer.


On me dit souvent utiliser "enctype="multipart/form-data": je sais que cette fonction permets de relier à une base de données, mais est ce que je dois réellement utiliser cette fonction sachant que je souhaite que le fichier image arrive dans un dossier de mon serveur ?

Dans le code php de phpmailer

je bloque a ce niveau : $body = $mail->getFile('contents.html'); que dois je mettre a la place de contents.html ??? dois je mettre les variable pour récupèrer le contenue de mon formulaire ????

$mail->AddAttachment("upload_image"); // attachment
Concernant la recpetion du fichier qui peut me donner des conseils car a ce niveau je bloque également

merci d'avance pour votre aide.

<form method="post" action="traitement_soumission_actualite.php" enctype="multipart/form-data">
   <h2>SELECTIONNE VOTRE SOUS CATEGORIE</h2>
<fieldset id="coordonnees">
<p id="forumles"><label>Sous Catégorie :</label>
<select name="produit">
<option value="choix">Faite votre choix</option>
<option value="a la une">A la une</option>
<option value="departementale et regionale">Départementale et régionale</option>
<option value="internationale">Internationale</option>
<option value="locale">Locale</option>
<option value="petites annonces">Petites annonces</option>
<option value="radio">Radio</option>
<option value="agences de presse">Agences de presse</option>
<option value="repertoires de la presse">Répertoires de la presse</option>
<option value="blog">Medias alternatifs et blog</option>
<option value="presse people">Presse people</option>
<option value="television">Télévision</option>
<option value="attache de presse">Conseil et attachés de presse</option>
<option value="meteo">Info-trafic et météo</option>
<option value="journaux magazines">Journaux et Magazines</option>
<option value="presse spécialisee">Presse spécialisée</option>
<option value="Medias sociaux">Medias sociaux</option>
<option value="Communiquer de Presse">Communiquer de Presse</option>
</select><br />
</p>
</fieldset>

<h2>VOS COORDONNEES</h2>
<fieldset id="coordonnees"><p id="civilite"><label>Civilité :</label>
<input type="radio" name="civilite" value="M" checked="checked"/>
M
<input type="radio" name="civilite" value="Mme" />Mme
<input type="radio" name="civilite" value="Mlle" />Mlle
</p>
<p>
<label>Nom : </label>
<input type="text" name="nom" size="30" /><br />
<label>Email : </label>
<input type="text" name="email" size="30"/><br />
</p>
</fieldset>

<h2>VOTRE SITE:</h2>
<fieldset id="coordonnees"><p><label>URL : </label>
<input type="text" name="url" size="30" /><br />
<label>Titre du site<br />
(max 50 caractères) : </label>
<input type="text" name="titre" size="30" /><br />
<label>Description du site<br />
(max 255 caractères): </label>
<textarea name="description" rows="2" cols="300"></textarea>
</p>
</fieldset>

<h2>LIEN DE RETOUR:</h2>
<fieldset id="coordonnees"><p id="formules">
<h4>Indiquez nous la page du lien retour:</h4>
<p><label>URL de la page: </label>
<input type="text" name="lienretour" size="30" /><br /></p>
</p>
</fieldset>
<h2>VOTRE FICHIER:</h2>
<fieldset id="coordonnees"><p id="formules">
<h4>Votre Logo au Format 120X90:</h4>
<input type="file" name="monfichier" size="30"><br />
<input type="hidden" name="MAX_FILE_SIZE" value="10000">
</p>
</fieldset>
<p id="bouton">
<input type="submit" value="ENVOYER" />
<input type="reset" value="EFFACER" /> 
</p>
</form>


<?php

include_once('class.phpmailer.php');

$mail             = new PHPMailer(); // defaults to using php "mail()"

$body             = $mail->getFile('contents.html');
$body             = eregi_replace("[\]",'',$body);

$mail->From       = "cedric.webmaster@gmail.com";
$mail->FromName   = "cedric webmaster";

$mail->Subject    = "PHPMailer Test Subject via mail()";

$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$mail->AddAddress("cedric.webmaster@gmail.com", "cedric webmaster");

$mail->AddAttachment("upload_image");             // attachment

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

?>


Merci pour votre aide !
L'attribut "enctype" de la balise formulaire détermine la façon dont sont encodées les données lors de l'envoie du formulaire. Dans le cas où les données contiennent un fichier, il faut utiliser la valeur "multipart/form-data".

La méthode getFile() de phpmailer permet de lire le contenu d'un fichier, par exemple pour récupérer le contenu du message à envoyer et stocké dans un fichier modèle HTML.

La méthode AddAttachment() permet quand à elle de joindre un fichier au mail. Il faut alors indiquer le chemin système vers l'image (comme pour une balise HTML <img>.
Le fichier envoyé via un formulaire doit donc avoir été préalablement uploadé sur le serveur.

Je te renvoies vers la doc de PhpMailer pour plus d'infos : http://phpmailer.worxware.com/index.php?pg=methods
Tu pourras également y trouver plusieurs exemples d'utilisation.