[RESOLU] cherche modele de formulaire contact francais

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 : [RESOLU] cherche modele de formulaire contact francais

Re: [RESOLU] cherche modele de formulaire contact francais

par moogli » 07 juil. 2013, 17:45

de rien


et pas de bol :mrgreen:
le coup du dossier spam tous le monde se b***** au moins une fois ;)


@+

Re: cherche modele de formulaire contact francais

par luckymaxou » 07 juil. 2013, 17:11

Merci,
pour ce qui est de l'hébergeur, j'ai malheureusement trouvé le problème !
j'ai fait tellement d'envois identiques de mon site vers mon adresse mail que "laposte.net" m'a déclaré comme spammeur !
pour ce qui est de l'hébergement free a l'avantage d'être gratuit, si tu en connais d'autres fiables et gratuits je suis preneur ;o))

Bon, merci encore pour tes suggestions
je mets le sujet comme résolu, car mon code ne marchait pas et grâce à toi il fonctionne
merci encore moogli
Lucky

Re: cherche modele de formulaire contact francais

par moogli » 07 juil. 2013, 16:16

cela fonction avec wamp ?
il y a un serveur smtp de paramètré ?


sinon après il faut voir avec l'hébergeur (free n'en n'est pas vraiment unil offre un possibilité mais le service n'est pas forcément identique à ce que l'on attend d"un hébergeur ;)


@+

Re: cherche modele de formulaire contact francais

par luckymaxou » 06 juil. 2013, 19:13

merci pour ta réponse.
bon malheureusement je ne comprends pas bien et ej me rends bien compte qu'il va falloir bucher beaucoup !
j'ai dejà pas mal bossé dans différents langage qui n'ont rien à voir, (html, C,VB, VBA, mains en php je suis encore nul GRRR...)

par contre, je suis hors sujet, mais je me m'explique pas pourquoi ce code fonctionne parfaitement chez moi avec Wamp et Firefox et ne marche pas (aucun code d'erreur, mais n'envoie pas le mail) chez mon hébergeur (Free.fr)

pourtant de ma page Web , j'ai déjà envoyé des mails (l'adresse ip et l'heure de connexion d'un visiteur) et ca marchait avec cette ligne
mail('[email protected]', 'envoi auto : nouveau visiteur', $msg);
je ne comprends pas
merci de votre aide si vous pouvez et si vous voulez
Lucky

Re: cherche modele de formulaire contact francais

par moogli » 05 juil. 2013, 19:29

if (1 === get_magic_quotes_gpc())

supprime un égale

mais cela m'étonne qu'un \ suffise à foutre le brin, surtout sur un envie de mail.

apès il faut voir la version de php.

a partir de php 5.4 cette fonction est inutile car les magic quote ont était supprimée.

quand au reste, perso j'utilise les données u tableau post, pas besoin d'autre variable t tu peu modifier ces données.

str_replace peux prendre en paramètre des tableaux, donc tu peux avantageusement remplacer la série de huit str_replace par un seul avec des tableaux (cf doc).

si tu n'a pas une version de php ayant les magic quote supprimée tu peux le faire avec un isset ou un fichier php.ini dans le répertoire, c'est une bonne pratique, surtout sachant que cette possibilités est supprimée avec php 5.4


@+

Re: cherche modele de formulaire contact francais

par luckymaxou » 04 juil. 2013, 23:35

tu es super !
ca marche
j'ai supprimé la totalite de la fonction rec
et j'ai modifié les lignes qui y faisaient appel
// formulaire envoyé, on récupère tous les champs.
CES 6 LIGNES
/*$nom        = (isset($_POST['nom'])) ;       //? Rec($_POST['nom'])        : '';
$email      = (isset($_POST['email'])) ;     //? Rec($_POST['email'])      : '';
$objet      = (isset($_POST['objet']))  ;    //? Rec($_POST['objet'])      : '';
$message    = (isset($_POST['message']));    //? Rec($_POST['message'])    : '';
$antispam_h = (isset($_POST['antispam_h'])); //? Rec($_POST['antispam_h']) : '';
$antispam_r = (isset($_POST['antispam_r'])); //? Rec($_POST['antispam_r']) : '';
*/
//******************************************************
REMPLACEES PAR CELLES CI
$nom        = (isset($_POST['nom'])) ? ($_POST['nom'])        : '';
$email      = (isset($_POST['email'])) ? ($_POST['email'])      : '';
$objet      = (isset($_POST['objet'])) ? ($_POST['objet'])      : '';
$message    = (isset($_POST['message']))? ($_POST['message'])    : '';
$antispam_h = (isset($_POST['antispam_h']))? ($_POST['antispam_h']) : '';
$antispam_r = (isset($_POST['antispam_r'])) ?($_POST['antispam_r']) : '';
//************************************************
Et voici le retour :
string 'tonton' (length=6)

string '[email protected]' (length=16)

string 'avec accents' (length=12)

string 'àà' (length=2)

array (size=7)
'nom' => string 'tonton' (length=6)
'email' => string '[email protected]' (length=16)
'objet' => string 'avec accents' (length=12)
'message' => string 'àà' (length=2)
'antispam_h' => string 'x' (length=1)
'antispam_r' => string '0' (length=1)
'envoi' => string 'Envoyer le formulaire !' (length=23)

Votre message nous est bien parvenu !
************************
Donc comme tu vois la fonction envoi fonctionne et j'ai bien recu le mail ! MERCI MILLE FOIS

1) me conseilles tu des modifs pour que mon code soit plus propre ?
2) le problème venait-il de la ligne "if (1 === get_magic_quotes_gpc())" que tu disais fausse et comment la modifier éventuellement ?
ou alors je laisse tout comme ça ? (pardonne moi mais je n'y connais pour l'instant pas grand chose, ca viendra)
Merci encore

Re: cherche modele de formulaire contact francais

par moogli » 04 juil. 2013, 22:58

donc la tu vois bien que le formulaire envoie les données saisie

Code : Tout sélectionner

'message' => string 'èàéç ppp ' (length=11)
il s'agit donc du traitement de $message qui ne vas pas.

sur cette ligne $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
enlève la fonction Rec pour voir ce que cela donne
$message = (isset($_POST['message'])) ? $_POST['message']: '';
et vois ce que cela donne.

est ce que tu n'aurais pas un pb avec le charset ?

@+

Re: cherche modele de formulaire contact francais

par luckymaxou » 04 juil. 2013, 22:51

OUPS ! evidemment tu auras compris que j'ai inversé "AVEC" et "SANS"
Donc 1er post = sans (message envoyé)
et 2eme Avec = (message vide)

Re: cherche modele de formulaire contact francais

par luckymaxou » 04 juil. 2013, 22:40

merci beaucoup pour ton soutien
alors je te mets les 2 versions (avec et sans accents)
1) AVEC :
string 'tonton' (length=6)

string '[email protected]' (length=16)

string 'sans accents' (length=12)

string 'pppp' (length=4)

array (size=7)
'nom' => string 'tonton' (length=6)
'email' => string '[email protected]' (length=16)
'objet' => string 'sans accents' (length=12)
'message' => string 'pppp' (length=4)
'antispam_h' => string 'chaud' (length=5)
'antispam_r' => string '1' (length=1)
'envoi' => string 'Envoyer le formulaire !' (length=23)

Votre message nous est bien parvenu !
2) SANS :
string 'tonton' (length=6)

string '[email protected]' (length=16)

string 'avec accents' (length=12)

string '' (length=0)

array (size=7)
'nom' => string 'tonton' (length=6)
'email' => string '[email protected]' (length=16)
'objet' => string 'avec accents' (length=12)
'message' => string 'èàéç

ppp

' (length=11)
'antispam_h' => string 'douze' (length=5)
'antispam_r' => string '2' (length=1)
'envoi' => string 'Envoyer le formulaire !' (length=23)

Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.

Re: cherche modele de formulaire contact francais

par moogli » 04 juil. 2013, 22:16

va falloir debuguer,
ajoute un var_dump($nom,$email, $objet, $message); et var_dump($_POST) avant le if ligne 127.

tu verras les données et pourra comparer ce que le formulaire envoie et ce qu'il te reste dans les variables.


autre infos
if (1 === get_magic_quotes_gpc()) ce test est forcément faux car get_magic_quote_gpc retourne un booleen (true / false) et la comparaison se fait avec un nombre (le triple égale compare aussi le type).

poste le résultat des var_dump ci dessus.

@+

Re: cherche modele de formulaire contact francais

par luckymaxou » 04 juil. 2013, 21:36

si je met un accent (è) par exemple dans le message, j'ai le retour
"Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."
et le champ message est vide.
si je ne mets pas d'accent, l'email part bien et je le reçoit.
j'ai essayé en supprimant la fonction "function IsEmail($email)", et en supprimant la ligne
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
mais c'est pareil
NB : pour vérifier, je suis local avec wampserver, et sous firefox
merci de ton aide
Lucky

Re: cherche modele de formulaire contact francais

par moogli » 04 juil. 2013, 21:19

j'ai testé ton code avec et sans accent et il semble fonctionner.

quel est le problème exactement, c'est pas clair la ;)


@+

Re: cherche modele de formulaire contact francais

par luckymaxou » 04 juil. 2013, 11:48

merci,
en fait j'ai déjà récupéré un fichiers que j’essaie de faire marcher depuis une semaine
tout va bien SAUF que dès que je mets un accent dans le message posté, il n'est pas reconnu et le message reste vierge.
si quelqu'un peut m'aider c'est bienvenu.
Attention je suis hyper débutant et ne maitrise pas encore bien les fonctions php
mon code :
<?php
mb_internal_encoding("UTF-8");// indique d'utiliser l'encodage UTF-8 j'ai esayé mais ca marche pas
/* ATTENTION : NACCEPTE PAS LES CARACTERES FRANCAIS */
/*
	********************************************************************************************
	CONFIGURATION
	********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = '[email protected]';

// copie ? (envoie une copie au visiteur)
$copie = 'oui';

// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';

// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/*
 * NoSpamQuestion affiche une question pour la validation d'un formulaire ...
 * $mode, mode question ou réponse par défaut tirage au sort de question {string}
 * $answer, lors de la demande d'une réponse à la question numero tant ... {int}
 *
 * @returns array
 *
 * Ajouter une question :
 * copier/coller ces lignes et remplir le contenu entre guillemets doubles :
 *
 * $array_pictures[$j]['num'] = $j; // ne pas changer cette ligne
 * $array_pictures[$j]['question'] = "mettre ici la question (correspondant à l'image si vous utilisez une image)";
 * $array_pictures[$j]['answer'] = "mettre ici la réponse à l'énigme";
 * $j++; // ne pas oublier cette ligne dans la copie :-)
 *
 * C'est tout. Question suivante ? :-)
 *
 */
function NoSpamQuestion($mode = 'ask', $answer = 0)
{
	$array_pictures = array(); $j = 0;

	$array_pictures[$j]['num'] = $j;
	$array_pictures[$j]['question'] = "Quelle est la cinquième lettre du mot Astux";
	$array_pictures[$j]['answer'] = "x";
	$j++;

	$array_pictures[$j]['num'] = $j;
	$array_pictures[$j]['question'] = "Le soleil est-il chaud ou froid ?";
	$array_pictures[$j]['answer'] = "chaud";
	$j++;

	$array_pictures[$j]['num'] = $j;
	$array_pictures[$j]['question'] = "Ecrire 12 en lettres";
	$array_pictures[$j]['answer'] = "douze";
	$j++;

	if ($mode != 'ans')
	{
		// on est en mode 'tirer au sort', on tire une image aléatoire
		$lambda = rand(0, count($array_pictures)-1);
		return $array_pictures[$lambda];
	}
	else
	{
		// on demande une vraie réponse
		foreach($array_pictures as $i => $array)
		{
			if ($i == $answer)
			{
				return $array;
				break;
			};
		};
	}; // Fin if ($mode != 'ans')
};
/*
	********************************************************************************************
	FIN DE LA CONFIGURATION
	********************************************************************************************
*/
	// on tire au sort une question
	$nospam = NoSpamQuestion();

/*
 * cette fonction sert à nettoyer et enregistrer un texte
 */
function Rec($text)
{
	$text = htmlspecialchars(trim($text), ENT_QUOTES);
	if (1 === get_magic_quotes_gpc())
	{
		$text = stripslashes($text);
	}

	$text = nl2br($text);
	return $text;
};

/*
 * Cette fonction sert à vérifier la syntaxe d'un email
 */
function IsEmail($email)
{
	$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
	return (($value === 0) || ($value === false)) ? false : true;
	
	
}

// formulaire envoyé, on récupère tous les champs.
$nom        = (isset($_POST['nom']))        ? Rec($_POST['nom'])        : '';
$email      = (isset($_POST['email']))      ? Rec($_POST['email'])      : '';
$objet      = (isset($_POST['objet']))      ? Rec($_POST['objet'])      : '';
$message    = (isset($_POST['message']))    ? Rec($_POST['message'])    : '';
$antispam_h = (isset($_POST['antispam_h'])) ? Rec($_POST['antispam_h']) : '';
$antispam_r = (isset($_POST['antispam_r'])) ? Rec($_POST['antispam_r']) : '';

// On va vérifier les variables et l'email 
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

if (isset($_POST['envoi']))
{
	// On demande la vraie réponse
	$verif_nospam = NoSpamQuestion('ans', $antispam_r);

	if (strtolower($antispam_h) != strtolower($verif_nospam['answer']))
	{
		// le formulaire s'arrête ici
		echo '<p>Vous n\'avez pas répondu correctement à la question Antispam ...</p>';
	}
	else
	{
		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
		{
			// les 4 variables sont remplies, on génère puis envoie le mail
			$headers  = 'From:'.$nom.' <'.$email.'>' . "\r\n";
			//$headers .= 'Reply-To: '.$email. "\r\n" ;
			//$headers .= 'X-Mailer:PHP/'.phpversion();

			// envoyer une copie au visiteur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire.','.$email;
			}
			else
			{
				$cible = $destinataire;
			};

			// Remplacement de certains caractères spéciaux
			$message = str_replace("'","'",$message);
			$message = str_replace("&#8217;","'",$message);
			$message = str_replace(""",'"',$message);
			$message = str_replace('<br>','',$message);
			$message = str_replace('<br />','',$message);
			$message = str_replace("<","<",$message);
			$message = str_replace(">",">",$message);
			$message = str_replace("&","&",$message);

			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				echo '<p>'.$message_envoye.'</p>';
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>';
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.'</p>';
			$err_formulaire = true;
		};
	};
}; // fin du if (!isset($_POST['envoi']))

if (($err_formulaire) || (!isset($_POST['envoi'])))
{
	// afficher le formulaire
	echo '
	<form id="contact" method="post" action="'.$form_action.'">
	<fieldset><legend>Vos coordonnées</legend>
		<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" /></p>
		<p><label for="email">Email :</label><input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" /></p>
	</fieldset>

	<fieldset><legend>Votre message :</legend>
		<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" /></p>
		<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea></p>
	</fieldset>

	<fieldset><legend>Antispam</legend>
		<p><label for="antispam_h">'.$nospam['question'].'</label><input type="text" name="antispam_h" id="antispam_h" /><input type="hidden" name="antispam_r" value="'.$nospam['num'].'" /></p>
	</fieldset>

	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
	</form>';
};
?>

Re: cherche modele de formulaire contact francais

par moogli » 03 juil. 2013, 23:25

Pas de modèle mais les exemples des cours c'est suffisant pour du basique mais effectivement jouer un peu avec le code.

@+

Re: cherche modele de formulaire contact francais

par luckymaxou » 03 juil. 2013, 20:25

merci...
mais je suis allé voir phpdebutant.org et je n'ai pas trouvé de modèle de formulaire contact :(