ajout de pièce jointe dans un formulaire de contact

julio2002
Invité n'ayant pas de compte PHPfrance

04 nov. 2007, 23:36

bonjour,

Je dispose d'un hébergement web mais je suis limité au niveau des mails, j'ai la possibilité de créer des redirections pour les mails entrant, mais quand je veux envoyer un mail avec l'adresse du site, je suis obligé d'envoyer ca de : [email protected] , la seule solution que j'ai trouvé est un code pour un formulaire de contact anonyme sur une page de mon site.

Mais je n'arrive pas a jouter a ce code la possibilité d'ajouter une pièce jointe ou plusieurs.
Pouvez vous m'aider a ajouter cette option, voici le code :
<?php
if(isset($_POST["envoyer"])){ // le formulaire a été soumis
	$status="erreur"; // Par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
	// mise en forme des champs saisis dans le formulaire lors de sa soumission
	$_POST["email_destinataire"]=trim(stripslashes($_POST["email_destinataire"]));
	$_POST["pseudo_expediteur"]=trim(stripslashes($_POST["pseudo_expediteur"]));
	$_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
	$_POST["titre"]=trim(stripslashes($_POST["titre"]));
	$_POST["message"]=trim(stripslashes($_POST["message"]));
	// test de la validité des champs saisis
	if(empty($_POST["email_destinataire"]) || empty($_POST["email_expediteur"]) || empty($_POST["message"])){ // un champ obligatoire est vide
		$erreur="Erreur: Les champs marqués (*) sont obligatoires...";
	}
	elseif(!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$",$_POST["email_destinataire"])){ // l'adresse e-mail du destinataire est invalide
		$erreur="L'adresse e-mail du destinataire est invalide...";
	}
	elseif(!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$",$_POST["email_expediteur"])){ // l'adresse e-mail du destinataire est invalide
		$erreur="L'adresse e-mail de l'expéditeur est invalide...";
	}
	else { // tous les champs sont correctement remplis: on pourra envoyer le mail
		$status="ok";
	}
}
else { // le formulaire n'a pas été envoyé
	$status="attente";
}
?>
<html>
<head><title>e-mail anonyme</title>
<meta name="description"  lang="fr" content="Préservez-vous du spam. Envoyez un e-mail anonyme.">
<meta name="keywords" lang="fr" content="email anonyme, e-mail anonyme, anti spam, mailer anonyme, cacher son adresse mail">
<meta name="robots" content="index, follow">
<meta name="author" content="ActuLab">
<link rel="DC.identifier" type="text/plain" href="http://www.actulab.com/php--e-mail-anonyme.php">
</head>
<body>
<h1>e-mail anonyme</h1>
<?php
if($status!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
	if($status=="erreur"){//le formulaire a été soumis avec une erreur
		echo"<p style=\"font-weight:bold;\">".$erreur."</p>\n";
	}
?>
	<form method="post" action="<?php echo$PHP_SELF; ?>">
	Adresse e-mail du destinataire (*):<br />
	<input type="text" name="email_destinataire" value="<?php
	if (!empty($_POST["email_destinataire"])) { // l'adresse email du destinataire a été entrée: la réafficher
		echo htmlspecialchars($_POST["email_destinataire"],ENT_QUOTES);
	}
	?>"><br />
	(Faux) pseudo de l'expéditeur:<br />
	<input type="text" name="pseudo_expediteur" value="<?php
	if (!empty($_POST["pseudo_expediteur"])) { // le pseudo de l'expéditeur a été entré: le réafficher
		echo htmlspecialchars($_POST["pseudo_expediteur"],ENT_QUOTES);
	}
	?>"><br />
	(Fausse) adresse e-mail de l'expéditeur (*):<br />
	<input type="text" name="email_expediteur" value="<?php
	if (!empty($_POST["email_expediteur"])) { // l'adresse email de l'expéditeur a été entrée: la réafficher
		echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
	}
	?>"><br />
	Titre de message:<br />
	<input type="text" name="titre" value="<?php
	if (!empty($_POST["titre"])) { // le titre du message a été entré: le réafficher
		echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
	}
	?>">
	<br />
	Message (*):<br />
	<textarea name="message" wrap="soft" rows="5" cols="40"><?php
	if (isset($_POST["message"])) { // le message a été entré: le réafficher
		echo htmlspecialchars($_POST["message"],ENT_QUOTES);
	}
	?></textarea><br />
	
	<input type="submit" name="envoyer" value="Envoyer">
	<input type="reset" value="Ré-initialiser">
	<a href="http://www.actulab.com/php--e-mail-anonyme.php" target="_blank" title="Ce script PHP sur votre site..."><img src="http://www.actulab.com/images/icon.gif" width="16" height="9" border="0" alt="Ce script PHP sur votre site..."></a>
	</form>
	<a href="http://www.actulab.com/php--e-mail-anonyme.php" target="_blank">Mailer anonyme offert par ActuLab</a>



<?php
}
else{// le formulaire a été soumis sans erreur, on envoie le mail
	if($_POST["pseudo_expediteur"]==""){ $_POST["pseudo_expediteur"]=$_POST["email_expediteur"]; }
	$entete = "From: ".$_POST["pseudo_expediteur"]." <".$_POST["email_expediteur"].">\n";
	$entete .= "Big-Brother-vous-observe: http://www.actulab.com/big-brother-vous-observe.php\n";
	$entete .= "MIME-Version: 1.0";
	if(mail($_POST["email_destinataire"],$_POST["titre"],$_POST["message"],$entete)){ // mail envoyé
		echo"Votre message a été envoyé.<br />\n";
		echo"<a href=\"".$PHP_SELF."\">Envoyer un autre e-mail anonyme...</a>";
	}
	else{ // erreur lors de l'envoi du mail
		echo"Un problème s'est produit lors de l'envoi.\n";
		echo"<a href=\"javascript:history.go(-1)\">Réessayez...</a>";
	}
}
?>
</body>
</html>
Merci

Mammouth du PHP | 2937 Messages

05 nov. 2007, 00:27

Si tu parles d'upload de fichier, il faut que l'élément form comporte l'attribut enctype="multipart/data", ainsi qu'un champ input de type "file", comme ci-dessous :

Code : Tout sélectionner

<form method="post" action="traitement-du-formulaire.php" enctype="multipart/data"> <p><label for="upload">Ajouter une pièce jointe</label></p> <p><input id="upload" name="upload" type="file" /><p> </form>
Le fichier uploadé est récupéré grâce à $_FILES. Encore faut-il procéder à des vérifications, de façon à ce que ledit fichier ne soit pas un fichier à risque de par son extension.

Un tutorial de PHPFrance complètera ce propos.

ViPHP
AB
ViPHP | 5818 Messages

05 nov. 2007, 02:16

Bonjour

Et pour ce qui est de l'envoi de pièces jointes dans un mail, Truc a donné récemment une bonne adresse http://www.phpfrance.com/forums/voir_re ... php#219404

Invité
Invité n'ayant pas de compte PHPfrance

05 nov. 2007, 02:56

merci victor brito mais à quel endroit faut il placer ce code?

j'ai essayé après cette balise :
Message (*):<br />
	<textarea name="message" wrap="soft" rows="5" cols="40"><?php
	if (isset($_POST["message"])) { // le message a été entré: le réafficher
		echo htmlspecialchars($_POST["message"],ENT_QUOTES);
	}
	?></textarea><br />
<form method="post" action="traitement-du-formulaire.php" enctype="multipart/data">
<p><label for="upload">Ajouter une pièce jointe</label></p>
<p><input id="upload" name="upload" type="file" /><p>
</form>
est ce que c'est bon comme ca?

Je ne sais pas si tu as regardé le script mais je dois remplacer l'attribut action de ton bout de code par quelle page ? tu as écrit : traitement-du-formulaire.php , je dosi créer cette page?

merci

Mammouth du PHP | 2937 Messages

05 nov. 2007, 12:35

Je ne sais pas si tu as regardé le script mais je dois remplacer l'attribut action de ton bout de code par quelle page ? tu as écrit : traitement-du-formulaire.php , je dosi créer cette page?
Garde la valeur indiquée par ton script : celle que j'ai donnée n'était qu'un exemple.

julio2002
Invité n'ayant pas de compte PHPfrance

06 déc. 2007, 14:37

Ca marche toujours pas, j'ai entendu dire qu'il faut rajouter une fonction dans l'entête pour que ca marche!

$entete .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";