Envoyer à une amie [Résolu/Fermé]

edwige34 2 Messages postés mercredi 30 juillet 2008Date d'inscription 18 août 2008 Dernière intervention - 18 août 2008 à 15:57 - Dernière réponse :  Akalien
- 4 oct. 2017 à 12:45
Bonjour,
Je voudrais savoir si quelqu'un saurait comment faire la partie, comme dans les sites commerciaux, "envoyer à une amie".
C'est à dire que lorsque l'utilisateur clique sur le lien "envoyer à une ami", il apparait une fenêtre ressemblant à une une page d'envoi mail avec l'adresse de celui qui envoie aisi que, dans la partie message , le lien du site . Il n'a donc plus qu'à ajouter l'adresse du destinataire.
Afficher la suite 
2Messages postés mercredi 30 juillet 2008Date d'inscription 18 août 2008 Dernière intervention

15 réponses

Groarh 682 Messages postés vendredi 1 août 2008Date d'inscription 28 juin 2015 Dernière intervention - 6 oct. 2008 à 18:53
+5
Utile
1
C'est super simple :)
reprends le code de l'envoi de mail (après que l'utilisateur ait saisi son message) :
<?php
$to = strip_tags($_POST['to']);
$object = strip_tags($_POST['object']);
$message = strip_tags($_POST['message']);

mail($to, $object, $message);
?>

Après la récupération-purification du message (à l'endroit où j'ai mis une ligne blanche), il suffit de rajouter, dans le message, le code de ta bannière sous forme de texte :
$message = "<a href=\"url_de_monsite\">
<img src=\"url_de_ma_banniere\" alt=\"texte de remplacement\" />
</a><br />" . $message;

NB : Les guillemets qui font partie du texte doivent être échappés avec des antislashes \ comme j'ai fait, sinon php va confondre avec la fin de la chaîne.

Reste à savoir si ton serveur te permet d'envoyer des mails au format html, mais c'est un autre problème...

NB2 : je ferme mes balises selon la norme xhtml strict. Si ça pose problème, retire les / à la fin de img et br.
Cette réponse vous a-t-elle aidé ?  
un grand merci a tous les gens qui crée des page web
Merci a votre équipe.
Groarh 682 Messages postés vendredi 1 août 2008Date d'inscription 28 juin 2015 Dernière intervention - 24 nov. 2008 à 16:08
+2
Utile
L'expédireur est dans la variable $to, c'est l'utilisateur qui renseigne cette donnée normalement. Si tu veux imposer une adresse cible, modifie les arguments de ta fonction mail :
mail("adresse@machin.com", $object, $message, $entete); 

;)
Nico_ 1232 Messages postés vendredi 29 décembre 2006Date d'inscription 15 mars 2016 Dernière intervention - 18 août 2008 à 21:26
+1
Utile
bonsoir,

J'ai une petite question:

tu recherches un script qui envoi la page en cours de visite ?
Exemple: ça envoi le lien suivant : http://www.commentcamarche.net/forum/affich 7956157 envoyer a une amie

ou

la page d'accueil du site ?
Exemple: ça envoi le lien suivant : http://www.commentcamarche.net

Bonne soirée
Groarh 682 Messages postés vendredi 1 août 2008Date d'inscription 28 juin 2015 Dernière intervention - 18 août 2008 à 23:30
+1
Utile
2
@ edwige34 : C'est assez simple, il s'agit d'un formulaire php avec 3 champs de texte et un bouton envoi. Voici un exemple simple mais respectueux des normes xhtml (une bonne habitude à prendre) :
<!DOCTYPE html PUBLIC
	"-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>test edwige34</title>
</head>

<body>
<h3>envoyer à une amie</h3>
<form action="envoyer.php" method="post">
<p>
	<label for="to">à :</label>
	<input type="text" name="to" id="to"></input>
</p>
<p>
	<label for="object">sujet :</label>
	<input type="text" name="object" id="object"></input>
</p>
<p>
	<label for="message">message :</label>
	<textarea name="message" id="message" rows="3" cols="60"></textarea>
</p>
<p><input type="submit"></input></p>
</form>
</body>
</html>

Dans ce code, le formulaire envoie les données de mail à un script appelé envoyer.php via la méthode POST. Il vaut mieux ne pas utiliser GET étant donné que le corps du mail fait partie des données et que GET, qui envoie les valeurs par l'URL, est parfois limité en longueur.
Le script récupère naturellement les variables grâce à $_POST et envoie le mail avec la fonction... mail() ^^

Par mesure de sécurité, il vaut mieux traiter les textes saisis par l'utilisateur, il pourrait tenter d'introduire du code malveillant. Pour ça, une fonction bien pratique qui supprime les balises html : strip_tags().
Au final, le fichier envoyer.php pourrait bien ressembler à ceci :
<?php
$to = strip_tags($_POST['to']);
$object = strip_tags($_POST['object']);
$message = strip_tags($_POST['message']);
mail($to, $object, $message);
?>

C'est l'exemple le plus simple je pense.
Bien sûr, il est possible d'ajouter un message de confirmation du genre :
echo "Le message intitulé $object a bien été envoyé à $to ...";

Dernier point : en xhtml, la balise textarea doit comporter obligatoirement les attributs rows qui décrit son nombre de lignes et cols son nombre de lettres par ligne. J'ai mis 3 et 60, à toi de mettre ce qui te convient.

Bon courage, et si tu as des questions je suis là !
fab2466 11 Messages postés samedi 31 janvier 2009Date d'inscription 30 juillet 2009 Dernière intervention - 17 févr. 2009 à 13:08
Question

Existe'-il un code tout fait que je pourrai introduire dans une nouvelle page, car pour moi c'est du chinois, comme ça je n'aurai plus qu'a personnalisé ma page ?

Merci d'avance

Fab
Nico_ 1232 Messages postés vendredi 29 décembre 2006Date d'inscription 15 mars 2016 Dernière intervention > fab2466 11 Messages postés samedi 31 janvier 2009Date d'inscription 30 juillet 2009 Dernière intervention - 17 févr. 2009 à 21:10
bonsoir,

tu peux le faire avec le code suivant :
copier l'intégrale de se code dans une page avec une extension .php

il faut simplement changer TON@dresse_mail.f (mis en gras) par ton adresse.

Bonne soirée

le code:
<?php
$envoi = $_POST['envoi'];
$email_dest = $_POST['zone_email'];
if ($envoi == "Envoyer" && $email_dest != ""){
if ($_POST['envoi']) {

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: ".$_SERVER["SERVER_NAME"]."<TON@dresse_mail.fr>\n";


$headers .="Content-Type: text/plain; charset=iso-8859-1";

$subject = "Découvrez ce site";


for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= " Un(e) ami(e) souhaite vous faire découvrir le site suivant: ". $_POST['champ'.$a] . "\n\n Bonne visite.";
}


$sortie = $partie_champs_texte ;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} else { // Closing if !mail...

if ($envoi == "Envoyer" && $email_dest != "") { echo 'Message envoyé';} if ($envoi == "Envoyer" && $email_dest == "") { echo 'Merci de renseigner l\'adresse du destinataire';} 
exit();

} // Fin du else
} // Closing if edit
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Pub_site_envoi_par_visiteur</title>

<link href="../dependant/css.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/javascript">function verifSelection() {if (document.mail_form.champ1.value == "") {
alert("URL page invalide")
return false
} if (document.mail_form.zone_email.value == "") {
alert("Pas de destinataire")
return false
}

invalidChars = " /:,;'"

for (i=0; i<invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (document.mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}

atPos = mail_form.zone_email.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (document.mail_form.zone_email.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

periodPos = mail_form.zone_email.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (periodPos+3 > mail_form.zone_email.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}} // Fin de la fonction

</script>
</head>

<body {background-color="#CABOFF"}>

<p>envoyer &agrave; un / une ami /amie</p>
    <p><form name="mail_form" method="post" action="?" onSubmit="return verifSelection()">
  <font face="Verdana" size="2">
    <?php $site =  $_SERVER["SERVER_NAME"]; ?>
  <input name="champ1" type="hidden" value="<?php echo 'http://'.$_SERVER['SERVER_NAME'] ;?>" />
        L'adresse du destinataire</font>
      <input name="zone_email" type="text" size="50">
    <input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="1">
        <input name="nbre_zones_texte" type="hidden" value="0">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_champ1" type="hidden" value="urlsite"><input name="titre_email" type="hidden" value="L\'adresse du destinataire"></td>

<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
      

</form></p>
<div align="center">
  <?php if ($envoi == "Envoyer" && $email_dest != "") { echo 'Message envoyé';} if ($envoi == "Envoyer" && $email_dest == "") { echo 'Merci de renseigner l\'adresse du destinataire';} ?>
</div>
</body>
</html>
Groarh 682 Messages postés vendredi 1 août 2008Date d'inscription 28 juin 2015 Dernière intervention - 8 oct. 2008 à 13:29
+1
Utile
Okaye... heu elles marchent comment tes newsletters ? Tu devrais reprendre le principe, si ça marche ^^
+1
Utile
Trop cool ça marche, super !

En faite, il suffisait que je rajoute ceci pour pouvoir voir l'image correctement :

<?php
$to = strip_tags($_POST['to']);
$object = strip_tags($_POST['object']);
$message = strip_tags($_POST['message']);
$message = "<a href=\"url_de_monsite\">
<img src=\"url_de_ma_banniere\" border=\"0\" alt=\"texte de remplacement\" />
</a><br /><br />" . $message;
$entete="Content-type:text/html";
mail($to, $object, $message, $entete);

Merci beaucoup pour ton aide Groarh, je suis super contente :-)
0
Utile
Bonjour,

Je recherchai ce script et il fonctionne à merveille :-)

Par contre, je voudrai par exemple qu'à la place du message que l'on tape, que cela soit une image avec un lien imposée qui soit envoyé, comment faire s'il vous plait ?

Merci pour vos réponses apportées.
Groarh 682 Messages postés vendredi 1 août 2008Date d'inscription 28 juin 2015 Dernière intervention - 6 oct. 2008 à 10:13
0
Utile
"Une image avec un lien imposé" ?
Peux-tu être plus précise Delphine s'il-te-plaît ? Garde à l'esprit qu'être webmaster c'est offrir des services aux visiteurs, pas leur en imposer !
0
Utile
Oui en effet c'est un service supplémentaire, seulement je ne veux pas que mes membres fassent n'importent quoi avec cette option.
Le but est de faire connaitre mon site à d'autres personnes par l'intermédiaire du membre déjà inscrit.
Donc quand je dis bannière avec lien, c'est genre bannière de parrainage...mais le membre pourra quand même rajouter un petit message s'il le souhaite mais je veux que la bannière ou le lien de mon site soit visible et ne puisse être effacé.
C'est juste pour éviter que certain membre fasse n'importe quoi avec cette option et en abuse.
0
Utile
Quand j'envois le message cela mets (sur le mail de la personne qui reçoit le message):
<a href=\"url_de_monsite\">
<img src=\"url_de_ma_banniere\" alt=\"texte de remplacement\" />
</a><br />ESSAI

Cela n'affiche pas la bannière ! pourtant je suis sûr que c'est possible car lorsque j'envoi une newsletter par ex et bien les bannières s'affichent bien.
Groarh 682 Messages postés vendredi 1 août 2008Date d'inscription 28 juin 2015 Dernière intervention - 8 oct. 2008 à 16:17
0
Utile
1
Content de t'avoir aidée ;)

N'oublie pas de marquer le topic comme résolu.
Bonjour,

Bon le script nikel franchement !
J'aurais juste aimé savoir comment pouvons nous faire pour changer l'adresse de l'expéditeur (actuellement envoi le nom de la société@ovh... )

Merci