Formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Formulaire

Re: Formulaire

par grimo » 04 mars 2011, 17:14

Wé ça serait bien si un modérateur pourrai le faire car j'ai posté étant invité.

Merci

Re: Formulaire

par misterflo » 04 mars 2011, 16:42

Y a pas de quoi ! ;)

Pense à mettre en résolu, cela pourrait éventuellement aider d'autres personnes.

Bon week end à toi aussi

Re: Formulaire

par grimo » 04 mars 2011, 15:56

En effet c'est un réglage de la messagerie. Ne pouvant pas le résoudre, j'ai changé le mail de réception et cela fonctionne parfaitement.

Merci beaucoup pour ton aide précieuse!

Bonne fin de journée et bon week end :D

Re: Formulaire

par misterflo » 04 mars 2011, 14:35

As-tu bien regardé dans les spam ?

J'ai essayé de mon côté avec ma propre adresse mail et cela fonctionne :?

C'est peut-être un problème au niveau de la configuration du serveur SMTP.

Re: Formulaire

par grimo » 04 mars 2011, 14:17

Je te remercie pour tout. J'ai donc tout copier coller dans ma page d envois.

j ai changé les accents et publié.

je remplis le formulaire j envois, c'est ok mais pas de mail sur ma boite mail.

Sais tu d'où cela vient?

Merci après j'embête plus ^^

Re: Formulaire

par misterflo » 04 mars 2011, 13:40

J'ai l'impression que tu galère pas mal :D
Il serait intéressant (obligatoire ?) de lire quelques tuto de base sur le php, il y en a plein le site et le forum de phpfrance, il y aussi beaucoup d'autres sites qui le font.

Enfin bon, je suis sympa aujourd'hui c'est cadeaux :mrgreen:
Voila le code PHP de ta page d'envoi de mail, il y a juste à remplacer toute ta page d'envoi de mail par celle-ci :
MAIS je le répète, faire un copier-coller c'est mal, il serait plus judicieux que tu comprenne le code que tu utilise, un petit rigolo pourrait mettre des trucs pas sympa dedans et tu pourrais ne pas t'en rendre compte, donc au final je sais pas si c'est sympa de ma part de te fournir le travail déjà fait :P
<?php
//On vérifie s'il faut traiter le formulaire
if (isset($_POST['Nom']) && !empty($_POST['Nom']))
{
	//On vérifie que tous les champs ont étaient remplis
	if (isset($_POST['Entreprise']) && !empty($_POST['Entreprise'])
	&& isset($_POST['Email']) && !empty($_POST['Email'])
	&& isset($_POST['Téléphone']) && !empty($_POST['Téléphone'])
	&& isset($_POST['nombre']) && !empty($_POST['nombre'])
	&& isset($_POST['Nombre_encart']) && !empty($_POST['Nombre_encart']))
	{
		//On vérifie que l'email du contact est un email valide
		if (filter_var($_POST['Email'],FILTER_VALIDATE_EMAIL))
		{
			//Si tous les champs ont étaient remplis on met ces valeurs dans des variables,
			//et on pense à les sécuriser !!!
			$nom = htmlspecialchars(substr($_POST['Nom'],0,300));
			$entreprise = htmlspecialchars(substr($_POST['Entreprise'],0,300));
			$email = htmlspecialchars(substr($_POST['Email'],0,300));
			$telephone = htmlspecialchars(substr($_POST['Téléphone'],0,300));
			$settable = htmlspecialchars(substr($_POST['nombre'],0,300));
			$nbencart = htmlspecialchars(substr($_POST['Nombre_encart'],0,300));

			//Adresse mail du receveur
			$to = "[email protected]";

			//On rédige l'email avec les valeurs du formulaire
			$msg_mail = "Formulaire envoyé par le site internet :

Nom : $nom
Entreprise : $entreprise
Email : $email
Téléphone : $telephone
Nombre d'exemplaire de set de table complet : $settable
Nombre d'encart de 10x9 cm : $nbencart
";

			//On renseigne les headers du mail
			$headers = "From: Devis Placemat<[email protected]>"."\n";
			$headers .= "Reply-to: [email protected]"."\n";
			$headers .= "Content-type: text/html; charset=utf-8"."\n";
			$headers .= "Content-Transfer-Encoding: 8bit"."\n";
			if (@mail($to,'Devis Site',nl2br($msg_mail),$headers))
			{
				$title = "Message envoyé";
				$msg = "<h1>Message envoyé</h1><br />\n";
				$msg .= '<a href="/">Retour à l\'accueil</a>';
			}
			else
			{
				$title = "Erreur d'envoi";
				$msg = "<h1>Impossible d'envoyer le formulaire</h1><br />\n";
				$msg .= "<h3>Veuillez nous excuser pour la gêne occasionnée</h3><br />\n";
				$msg .= '<a href="javascript:history.go(-1)">Retour au formulaire</a>';
			}
		}
		else
		{
			$title = "Erreur dans le formulaire";
			$msg = "<h1>Votre Email n'est pas valide</h1><br />\n";
			$msg .= '<a href="javascript:history.go(-1)">Retour au formulaire</a>';
		}
	}
	else
	{
		$title = "Erreur dans le formulaire";
		$msg = "<h1>Pensez à bien remplir tous les champs du formulaire !</h1><br />\n";
		$msg .= '<a href="javascript:history.go(-1)">Retour au formulaire</a>';
	}
}
//Si l'utilsateur arrive sur cette page sans avoir cliqué sur le bouton envoi alors on redirige vers la page du formulaire
else
{
	header('Location: formulaire.html');
	exit;
}
?>
<!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" />
	<meta http-equiv="Content-Language" content="fr" />

	<title><?php if (isset($title)) echo $title; ?></title>

</head>
<body>
<?php
if (isset($msg)) echo $msg;
?>
</body>
</html>
Autre chose, dans ta page du formulaire, pour ton <select> avec le nombre de set de table, au lieu de mettre 10,20,50 met plutôt 10000, 20000,50000 !
Ta valeur Téléphone dans ta page de formulaire, tu as enlevé les accents ? Car dans ton dernier poste tu mets $_POST['Telephone'], si oui, dans le code que j'ai mis pense aussi à le remodifier !

Ce que tu as fait à la fin n'est pas trop mal, faut bien penser à faire un htmlspecialchars à tous tes $_POST.
Ensuite l'autre problème c'est que la fonction mail() ne s'utilise pas comme ca.
mail(ADRESSE DESTINATAIRE, SUJET DU MAIL, MESSAGE DU MAIL, EN-TETE);

en clair, avec des variables 

mail($to, $subject, $message, $headers);
Le problème venait du fait que tu mettais les variables $nom, $entreprise etc, dans la fonction mail, il faudrait plutôt faire comme j'ai fais dans le code au dessus, c'est à dire faire une variable $message et dedans lui passer toutes les autres variables.

Re: Formulaire

par nee1mpy » 04 mars 2011, 12:55

La redirection marche mais je ne reçois pas d'email. que faire?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=%codepage%">
<meta name="Generator" content="Serif WebPlus 11.0">
<title>Contact</title>
</head>
<style type="text/css">
<!--
a:link {color: %hyperlink%;}
a:visited {color: %followed%;}
a:hover {color: %rollover%;}
a:active {color: %active%;}
-->
</style>
<body style="background: %background%;">
<?php
// la variable $to defini l'adresse ou l'email sera envoyé
$to='[email protected]';
$subject = "Devis";
// le contenu
$nom = ($_POST['Nom']);
$entreprise = ($_POST['Entreprise']);
$email = ($_POST['Email']);
$tel = ($_POST['Telephone']);
$nb_set = ($_POST['nombre']);
$nb_encart = ($_POST['Nombre_encart']);

// on envoie
mail($to, $subject, $nom, $entreprise, $tel, $nb_set, $nb_encart);
?>
<br><font size="20" face="Arial Black">Merci!</font>
<p><a href="%home%">Accueil</a>
</body>
</html>

Re: Formulaire

par grimo » 04 mars 2011, 10:56

donc mon code html normalement c'est bon, il suffisait de remplir les valeurs manquantes.

et mon php pour l'envoi ressemble à cela:
Manque t'il quelque chose où j'ai mis en rouge pour la liaison?
$subject = "Devis";
// le contenu
$content='de: $nom = htmlspecialchars($_POST['Nom']);
$entreprise = htmlspecialchars($_POST['Entreprise']);
$email = htmlspecialchars($_POST['Email']);
$tel = htmlspecialchars($_POST['Téléphone']);
$nb_set = htmlspecialchars($_POST['nombre']);
$nb_encart = htmlspecialchars($_POST['Nombre_encart']);

// on envoie
mail($to, $subject, $content);
?>

Merci de votre aide

Re: Formulaire

par misterflo » 04 mars 2011, 00:48

Non, pas du tout ^^'

Ce doit être comme ca(mon poste précédent) dans ta page du formulaire.

Par contre dans ta page d'envoi de mail, tu récupèreras les valeurs de tes <select> en $_POST comme tu as fait pour les autres, c'est à dire :
$_POST['Nom'] correspond au champ Nom dans ta page formulaire, $_POST['Entreprise'] correspond au champ Entreprise dans le formulaire etc.
Pour les 2 <select> ce sera pareil, $_POST['nombre'] correspond au select du nombre d'exemplaire de set de table, et $_POST['Nombre_encart'] correspond au <select> du Nombre d'encart.

Ensuite pour protéger tes valeurs recus dans tes $_POST['...'], il faut que tu fasse un htmlspecialchars($_POST['...']) pour CHAQUE $_POST.
Par exemple tu peux mettre chacune des valeurs de tes $_POST dans des variables, ce qui sera plus facilement réutilisable dans ta page par la suite.
Ce qui donnerai quelque chose comme ca :
$nom = htmlspecialchars($_POST['Nom']);
$entreprise = htmlspecialchars($_POST['Entreprise']);
$email = htmlspecialchars($_POST['Email']);
$tel = htmlspecialchars($_POST['Téléphone']);
$nb_set = htmlspecialchars($_POST['nombre']);
$nb_encart = htmlspecialchars($_POST['Nombre_encart']);
Ensuite dans le reste de ton traitement tu réutilise tes variables $nom, $entreprise etc., tu sais qu'elles sont déjà traitées comme il faut :)


Si tu as vraiment des difficultés à mettre en place un formulaire, tu devrais voir quelques tutoriels sur internet pour t'aider, afin d'éviter des problèmes de sécurités etc ^^

Re: Formulaire

par grimo » 03 mars 2011, 19:20

Donc mon code doit ressembler à cela:

$content='de: '(.$_POST['Nom'].)' '(.$_POST['Entreprise'].)' '(.$_POST['Email'].)' '(.$_POST['Telephone'].)' '<select name="nombre" size="1" __AddCode="here">
<option value="non">Non</option>
<option value="10">10'000</option>
<option value="20">20'000</option>
<option value="50">50'000</option>
</select>;

Merci de réctifier si il le faut.

Re: Formulaire

par misterflo » 03 mars 2011, 18:59

Tu parle des <select> ?
Si c'est ca, dans les <option value="" ...>, il faut justement remplir le champ value par la valeur que tu veux recevoir, par exemple pour le premier <select> cela donnerai quelque chose comme :
<select name="nombre" size="1" __AddCode="here">
	<option value="non">Non</option>
	<option value="10">10'000</option>
	<option value="20">20'000</option>
	<option value="50">50'000</option>
</select>
Ensuite dans l'email les valeurs de retour seront soit non, soit 10 etc...

Pour protéger les $_POST['...'] il faudrait leur passer un htmlspecialchars ou un htmlentities :
htmlspecialchars($_POST['...'])

Re: Formulaire

par grimo » 03 mars 2011, 17:18

Ok merci.

Mais j'aimerais avoir le code pour les choix multiple pour recevoir les infos.

Savez vous se que je dois mettre dans la ligne du modèle php pour que je reçoive le toute.

Oui je sais mais c'est un site provisoire pour lancer une petite entreprise et par la suite demander à un pro.
Merci

Re: Formulaire

par misterflo » 03 mars 2011, 17:15

Comme le dit xTG, il faut que tu fasse extrêmement attention à la récupération des valeurs des champs !!

Pour l'erreur de l'envoi du mail, il manque un ' dans $_POST[ICITéléphone']

(Je sais pas pour l'avis des autres, mais moi j'éviterai absolument de mettre des accents dans des variables !)

WebPlus c'est pas génial, un peu comme tout éditeur wysiwyg, ca dépanne, mais c'est toujours mieux de mettre la main à la pâte.
Si tu as un peu de temps, il serait bien plus bénéfique pour toi d'apprendre le HTML / PHP sans passer par des éditeurs wysiwyg. Tu trouve des tonnes de tuto un peu partout sur le net !

Re: Formulaire

par grimo » 03 mars 2011, 17:02

merci de la réponse

Sache que je suis débutant donc si tu pouvais m expliquer plus stp.

J'ai utilisé webplus pour faire cela.

Re: Formulaire

par xTG » 03 mars 2011, 16:54

Fais un var_dump($_POST); pour vérifier que tu reçois bien ce que tu veux.

De plus je te conseille vivement de vérifier les champs reçus...
On ne récupère pas ainsi, n'importe comment, des variables dont on n'est pas certain de la valeur.