Page 1 sur 1

formulaire de contact

Posté : 16 sept. 2009, 22:34
par jawaad
Bonjour à tous, et merci d'avanc pour votre aide qui est précieuse.

J'aimerais mettre un formulaire de contact avec envoie des réponses par mail à l'aide du PHP. J'ai récupéré un code et je l'ai intégré comme ceci:
<?php
	/*
		********************************************************************************************
		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.";

	/*
		********************************************************************************************
		FIN DE LA CONFIGURATION
		********************************************************************************************
	*/

	/*
	 * cette fonction sert à nettoyer et enregistrer un texte
	 */
	function Rec($text)
	{
		$text = trim($text); // delete white spaces after & before text
		if (1 === get_magic_quotes_gpc())
		{
			$stripslashes = create_function('$txt', 'return stripslashes($txt);');
		}
		else
		{
			$stripslashes = create_function('$txt', 'return $txt;');
		}

		// magic quotes ?
		$text = $stripslashes($text);
		$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
		$text = nl2br($text);
		return $text;
	};

	/*
	 * Cette fonction sert à vérifier la syntaxe d'un email
	 */
	function IsEmail($email)
	{
		$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
		return (eregi($pattern,$email)) ? true : false;
	};

	$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

	// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
	$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']) : '';

	if (isset($_POST['envoi']))
	{
		// 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 = (IsEmail($email)) ? false : true;

		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
		{
			// les 4 variables sont remplies, on génère puis envoie le mail
			$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

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

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

			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				echo '<p>'.$message_envoye.'</p>'."\n";
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>'."\n";
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.' <a href="contact.php">Retour au formulaire</a></p>'."\n";
			$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.'">'."\n";
		echo '	<fieldset><legend>Vos coordonnées</legend>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="nom">Nom :</label>'."\n";
		echo '			<input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
		echo '		</p>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="email">Email :</label>'."\n";
		echo '			<input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
		echo '		</p>'."\n";
		echo '	</fieldset>'."\n";

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

		echo '	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>'."\n";
		echo '</form>'."\n";
	};
?>
J'ai ensuite envoyer la page nomé "contact.php" sur mon serveur (un serveur linux au passage) pour tester le résultat. je me rends donc sur la page à l'aide de mon navigateur, la page s'affiche corectement, je remplis le formulaire de contact et je clique sur envoie. et le resultat n'est pas celui attendus, en effet un message d'éreure s'affiche:

Code : Tout sélectionner

Warning: mail() [function.mail]: SMTP server response: 542 You send too many emails within 24hrs. Wait tomorrow to your account to be unblocked. Debug script From:jawaad <[email protected]> Sujet:teste To:[email protected],[email protected] . in D:\www\laoni.net\htdocs\template\contact.php on line 183 L'envoi du mail a échoué, veuillez réessayer SVP.
je tiends à préciser que je n'ai rien fais d'autre comme démarche sur le serveur à pars activer la fonction PHP. Que dois je faire?!! au secour!


Jawaad

Re: formulaire de contact

Posté : 16 sept. 2009, 22:41
par zeus
Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Re: formulaire de contact

Posté : 16 sept. 2009, 22:44
par jawaad
Bonjour,

Merci pour l'info, je ferais attention à rendre mes messages plus lisible. Merci pour la modif...

Re: formulaire de contact

Posté : 16 sept. 2009, 22:56
par Dr@ke
Perso, change de script...
Sans avoir étudié le code a fond:
A part qu'il peut -être intéressant, je le trouve pas propre, fouillis et sans structure...
Quelques fonctions Deprecated ( Dépassées)...
pour résumer: plus simple de partir d'un petit script propre et ensuite l'améliorer...

Sinon ton message d'erreurs, dit en gros que tu as envoyé trop de mails dans les dernières 24 heures...
(En espérant que cela ne soit pas à cause d'un seul envoie de mail avec ce script...)

Re: formulaire de contact

Posté : 17 sept. 2009, 09:52
par FredoMkb
Bonjour :)

Si ça peut rendre service, voici un mini formulaire Contact (attention, l'exemple en ligne n'est pas fonctionnel).

Le formulaire est assez simple, il comporte un captcha anti-spam très basique, mais souvent suffisant.

Le code source complet est le suivant (attention, bien penser à personnaliser la variable $sDst avec l'adresse email du destinataire) :
<?php
// Mini formulaire Contact
// L'adresse email du destinataire (a personnaliser)
$sDst = 'adresse_email@fournisseur_access.ext'; 
// Valeurs par defaut des differentes variables de travail
list($bOk, $sExp, $sObj, $sMsg, $sCas, $sInfo) = array(0, '', '', '', '', '');
// Lors de l'envoi du formulaire
if (isset($_POST['snd'])) {
	// Email de l'expediteur
	$sExp = rtrim('' . @$_POST['exp']);
	$bTst = 0 + strpos($sExp, '@') + strpos($sExp, '.');
	if (!$bTst) { $sInfo .= 'L\'adresse email est vide ou erronnée...<br />'; }
	// Objet du message
	$sObj = rtrim('' . @$_POST['obj']); 
	if (empty($sObj)) { $sInfo .= 'L\'objet du message est vide...<br />'; }
	// Texte du message
	$sMsg = wordwrap('' . @$_POST['msg'], 68); 
	if (empty($sMsg)) { $sInfo .= 'Le texte du message est vide...<br />'; }
	// Captcha Anti-Spam
	$sCas = rtrim('' . @$_POST['cas']); 
	if (empty($sCas) || ($sCas != date('Ymd'))) { $sInfo .= 'Le Captcha Anti-Spam est vide ou erronné...<br />'; }
	// Si tout Ok, alors envoi de l'email
	if (empty($sInfo)) { $bOk = 0 + @mail($sDst, $sObj, $sMsg, 'From: '.$sExp); }
	// Message d'info a afficher
	if ($bOk) {
		list($sExp, $sObj, $sMsg) = array('', '', '');
		$sInfo .= 'Le message a été envoyé avec succes !';
	} else {
		$sInfo .= 'Le message n\' pu être envoyé !';
	}
}
$hForm = '<form action="index.php" method="post" style="width: 500px; padding: 0px; margin: 10px auto; text-align: left; font-family: Verdana; font-size: 12px;">
<fieldset style="margin: 10px; padding: 8px 12px; border: 1px solid #666666; background-color: #f9f9f9;">
<legend style="margin: 0px; padding: 2px 8px; border: 1px solid #666666; color: #ffffff; font-size: 14px; background-color: #666666;">Contact</legend>
<p><label for="exp">Votre Email : <em style="font-size: 10px; color: #666666;">(requis)</em></label><br /><input type="text" name="exp" id="exp" value="'.$sExp.'" style="width: 100%;" /></p>
<p><label for="obj">Objet du message : <em style="font-size: 10px; color: #666666;">(requis)</em></label><br /><input type="text" name="obj" id="obj" value="'.$sObj.'" style="width: 100%;" /></p>
<p><label for="msg">Texte du Message : <em style="font-size: 10px; color: #666666;">(requis, code Html non support&eacute;)</em></label><br /><textarea name="msg" id="msg" cols="58" rows="8" style="width: 100%;">'.$sMsg.'</textarea></p>
<p><label for="cas">Captcha Anti-Spam : <em style="font-size: 10px; color: #666666;">(requis)</em></label><br /><label for="cas">Indiquez la date du jour sous la forme "AAAAMMJJ" : </label><input type="text" name="cas" id="cas" value="" style="width: 100px;" /></p>
<p style="text-align: center;"><input type="submit" name="snd" value=" Envoyer " style="width: 120px; font-size: 16px;" /></p>
<p style="text-align: center; color: #cc0000;">'.$sInfo.'</p>
</fieldset>
</form>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html> 
<head>
<title> Contact </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="page">
<?php echo $hForm; ?>
</div>
</body>
</html>
;)