Rapatrier données d'un formulaire vers mail

Mysterious_fea Messages postés 406 Statut Membre -  
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut à tous !
Pour rappatrier les données d'un formulaire de contact sur mon site ( http://www.en-scene-association.fr ), j'utilisait jusqu'à présent le service gratuit de QuickWeb.com.
Mais voilà, la pub, ainsi que le message d'alerte terroriste (enfin presque...) à chaque envoi de formulaire, c'est pas le top.
Connaîtriez vous un autre service à installer directement sur son serveur, du style Raynette, pour faire cela ?
Ou alors suffit-il d'indiquer son mail en cible du formulaire ?

Un autre problème : la validation du formulaire avec les champs obligatoires, le type de données dans chaque champ, n'est pas très efficace avec Dreamweaver. Connaîtriez vous un site où c'est expliqué ou une astuce ou quelque chose pour le faire soi-même ?
Merci beaucoup d'avance
Ciao
A voir également:

37 réponses

Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
pour moi (et psPad), la dernière fermeture d'accolade ('}') est en trop.
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
Ben dsl mais je trouve pas où est l'erreur justement !
Si par hasard vous trouvez...
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
Toujours erreur !
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
on a pas de boule de cristal !
filer un coup de main : oui.
mais gratter à distance : non.
donc il va falloir t'investir un peu plus !


QUELLE ERREUR ???!!!

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mysterious_fea Messages postés 406 Statut Membre 35
 
Parse error: parse error, unexpected '{' in /homepages/32/d210732052/htdocs/ensceneassociation/formulaire.php on line 185

Ne connaissant pas bien la synthaxe du PHP, j'ai du mal à spotter les erreurs...
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
Je comprend pas d'où ça peut venir
0
Alain42
 
J'avais posté une réponse ou je te listait toutes les { } qui manquaient mais il a disparu !

il t'en manque pas mal dans tes test if avant et après des else aussi

Il me semble que tu as deux else pour un seul if aussi.

Quel éditeur utilises-tu ?
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
moi j'arrive à ça, sans relire vraiment le code mais en essayant de rester logique (c'est pas gagné…) :
<?php
$Envoi="\n".'<span class="bt">
<input name="envoi" id="send" tabindex="4" value="Envoyer" type="submit"></span>';
$Reini="\n".'<span class="bt">
<input name="reini" id="reset" tabindex="5" value="R&eacute;initialiser" type="reset"></span>';
if (isset($_POST['message']))
{
	// La variable $verif va nous permettre d'analyser si la sémantique de l'email est bonne
	$verif='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
	//quelques remplacements pour les specialchars
	$message=preg_replace('#(<|>)#', '-', $_POST['message']);
	$message=str_replace('"', "'",$message);
	$message=str_replace('&', 'et',$message);
	$nom=preg_replace('#(<|>)#', '-', $_POST['nom']);
	$nom=str_replace('"', "'",$nom);
	$nom=str_replace('&', 'et',$nom);
	$adresse=preg_replace('#(<|>)#', '-', $_POST['adresse']);
	$adresse=str_replace('"', "'",$adresse);
	$adresse=str_replace('&', 'et',$adresse);
	$ville=preg_replace('#(<|>)#', '-', $_POST['ville']);
	$ville=str_replace('"', "'",$ville);
	$ville=str_replace('&', 'et',$ville);

	// On assigne et/ou protège nos variables
	$votremail=stripslashes(htmlentities($_POST['votremail']));
	$message=stripslashes(htmlspecialchars($message));
	$nom=stripslashes(htmlspecialchars($nom));
	$motif=stripslashes(htmlspecialchars($motif));
	$adresse=stripslashes(htmlspecialchars($adresse));
	$code=stripslashes(htmlspecialchars($code));
	$ville=stripslashes(htmlspecialchars($ville));
	$tel=stripslashes(htmlspecialchars($tel));
	$tel2=stripslashes(htmlspecialchars($tel2));
	//input envoi
	$envoi=htmlentities($_POST['envoi']);
	//on enlève les espaces
	$votremail=trim($votremail);
	$message=trim($message);
	$nom=trim($nom);
	$adresse=trim($adresse);
	$code=trim($code);
	$ville=trim($ville);
	$tel=trim($tel);
	$pot=trim($pot);


	/*On vérifie si l'e mail et le message sont pleins, et on agit en fonction.
	(on affiche Apercu du resultat, tel ou tel champ est vide, etc...*/
	//Si ca ne vas pas (mal rempli, mail non valide...)
	if((empty($message))or(empty($nom))or(empty($tel))or(!preg_match($verif,$votremail)))
	{
		//les 4 champs sont vides
		if(empty($votremail)and(empty($message))and(empty($nom))and(empty($tel)))
		{
			echo '<p class="bt">Merci de remplir tous les champs marqués d\'une ast&eacute;risque.</p>';
			$message='';$votremail='';$nom='';
		}
		//un ou plusieurs des champs est/sont vide/s
		else
		{
			if((empty($votremail))and(empty($tel))
			{
				if(!preg_match($verif,$votremail))
				{
					echo'<p class="bt">Votre adresse e-mail n\'est pas valide.</p>';
					$message='';$nom='';$adresse='';$code='';$ville='';$motif='';
				}
				else
				{
					echo '<p class="bt">Merci d\'indiquer au moins un moyen de vous contacter (mail ou t&eacute;l&eacute;phone)</p>';
					$message='';$nom='';$adresse='';$code='';$ville='';$motif='';
				}
			}
			else
			{
				echo '<p class="bt">Merci de remplir tous les champs munis d\'une astérisque.</p>';
				$message='';$nom='';$adresse='';$code='';$ville='';$motif='';$motif='';
			}
		}

	}
	//Si les deux sont pleins et que l'adresse est valide, on envoie on on prévisualise sans envoi
	else
	{
		$domaine=preg_replace('#[^@]+@(.+)#','$1',$votremail);
		$DomaineMailExiste=checkdnsrr($domaine,'MX');
		if(!$DomaineMailExiste)
		{
			echo'<p class="bt">Votre adresse e-mail n\'est pas valide.</p>';
		}
		else
		{
			if($_POST['tel']!="" )
			{
				if( !is_numeric($_POST['code']) || strlen($_POST['code']!="10"))
				{
					//message d'erreur
					echo'<p class="bt">Le num&eacute;ro de t&eacute;l&eacute;phone n\'est pas valide.</p>';
				}
				else
				{
					if(!empty($envoi))
					{
						$objet='.::'.$motif.' de '.$nom.' - Formulaire du site::.';
						$headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type:text/html;charset=fr-ascii\r\n'.'MIME-Version: 1.0\r\n'.'Sent:'.date('l, F d, Y H:i');
						$messagefinal='Motif du message : '.$motif."\r\n".'Nom : '.$nom."\r\n".'Adresse : '.$adresse.' - '.$code.' '.$ville."\r\n".'Num&eacute;ro(s) de t&eacute;l&eacute;phone : '.$tel.' - '.$tel2."\r\n".'Message : '."\r\n".$message."\r\n";
						if(mail($destinataire,$objet,$messagefinal,$headers))
						{
							echo "<script language=\"JavaScript\">
							<!--
							document.location=\"/formulaire-envoye.html#form\";
							//-->
							</script>";
						}
					}
					else
					{
						echo'<p class="bt">Votre message n\'a pas pu &ecirc;tre envoy&eacute; correctement. Merci de r&eacute;essayer en remplissant correctement tous les champs marqués d\'une ast&eacute;risque.</p>';
					}
				}
			}
			else
			{
				echo'<p class="bt">Votre message n\'a pas pu &ecirc;tre envoy&eacute; correctement. Merci de r&eacute;essayer en remplissant correctement tous les champs marqués d\'une ast&eacute;risque.</p>';
			}

		}
	}
else
{
	echo '<p class="bt">Remplissez tous les champs munis d\'une ast&eacute;risque et cliquez sur le bouton "Envoyer".</p>';
	$votremail='';$message='';$nom='';$adresse='';$code='';$ville='';$tel='';$tel2='';
}
?>
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
J'utilise Dreamweaver
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

pour php, utilise plutôt NotePad++.
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
Je l'ai d ja, je vais voir...
Merci
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
C'est bon j'ai trouvé la faille !
J'ai un peu bidouillé, beaucoup cherché et c'est bon ! Par contre j'ai renoncé à rajouter des restrictions pour l'envoi pour le moment.
Mais j'ai un autre problème (et oui, il fallait s'en douter !) : comment remplacer les sauts à la ligne de la zone message par des <br> ou des \r\n pour qu'ils apparaissent dans le mail ?
Ca doit être quelque chose comme ça :
message=str_replace(kelkechose,kelkechose,$message);

Mais je ne sais pas quoi mettre dans les parenthèses.
Et faut-il remplacer les sauts à la ligne par des <br>, sachant que mon mail est en html ? :
$objet='.::'.$motif.' de '.$nom.' - Formulaire du site::.';				              $headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".
'Content-type:text/html;charset=fr-ascii\r\n'.
'MIME-Version: 1.0\r\n'.'Sent:'.date('l, F d, Y H:i');
$messagefinal="<html><span class="titre">Motif du message :</span> $motif<br><span class="titre">Nom :</span> $nom<br><span class="titre">Adresse :</span> $adresse - $code $ville<br><span class="titre">Téléphone :</span> $tel - $tel2<br><span class="titre">Message :</span><br> $message </html>";

Merci
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
Autre truc : la mise en forme du mail pour un problème :
Ligne 207
$messagefinal="<html><strong><font color="e00300">Motif du message :</font></strong> $motif<br><strong><font color="e00300">Nom :</font></strong> $nom<br><strong><font color="e00300">Adresse :</font></strong> $adresse - $code $ville<br><strong><font color="e00300">T&eacute;l&eacute;phone :</font></strong> $tel - $tel2<br><strong><font color="e00300">Message :</font></strong><br> $message </html>";

Et le serveur m'affiche l'erreur suivante :
Parse error: parse error, unexpected T_STRING in /homepages/32/d210732052/htdocs/ensceneassociation/formulaire.php on line 207

Quel est le problème ? Il semble que l'utilisation des # pour les couleurs fassent des erreurs, alors je les ai enlevé, mais toujours erreur. Je n'arrive pas non plus à utiliser de CSS.
Merci
Ciao
0
Alain42
 
Tu mets $messagefinal=".................";

alors puisque ta chaine est entre des "

il faut que tu échapes tous les " qui sont dans la chaine par \ , sinon ils sont interprétés comme la fin de la chaine et le caractère qui suit n'est pas compris (unexpected T_STRING)

exemple:

$messagefinal="<html><strong><font color=\"e00300\">Motif du message :<...........


ou alors tu mets des ' à l'intérieur de ta chaine à la place des "
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
OK Merci beaucoup.
Et quant aux sauts de ligne dans le la textarea ?
Merci
Ciao
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

si tu envoies direct ton mail depuis la saisie du '<textarea>' tu peux essayer la fonction 'nl2br()' pour formater la saisie des retours charriot en html.
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
Encore un autre truc (n'oubliez pas les sauts de ligne !) : comment faire apparaître dans "De" ou "From", à l'arrivée du mail, le nom de la personne. Parce que, jusqu'à maintenant, j'ai mis l'email entré en "From", mais arrivé dans la boite de récép de Gmail, je vois comme expéditeur le préfixe de l'email (avant le @), alors que certains sites qui vous envoient des mails apparaissent avec leur nom, pas le préfixe de leur adresse.
Je ne suis pas sûr que c'est possible, mais si quelqu'un a une idéé...
Ciao
0
Mysterious_fea Messages postés 406 Statut Membre 35
 
Plus clairement : que l'expéditeur apparaisse comme ça : Nom <email@domaine.com>
Mais que quand on fait "Répondre", cela réponde bien à email@domaine.com
Voilà
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

tu as trouvé la réponse.
tu ajoutes "Nom <email@domaine.com>" dans le header 'From' de ton mail.
il faudrait peut être vérifier la syntaxe, mais il me semble que tu as visé juste

sinon pour les mail, (tu l'as fait par toi même) la bonne école c'est ta boite mail !!!
il faut regarder le code source des news letters des grandes entreprises. ce n'est pas forcement le nec plus ultra technique mais ça doit passer partout.

0