Probleme avec mon script de contact

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 : Probleme avec mon script de contact

Re: Probleme avec mon script de contact

par Djeff » 13 août 2009, 14:47

voila en fait la boite mail identifie que l'adresse mail de l'expediteur (moi mon script reprend celle de la personne qui est venue sur mon site) est différente de celle qui envois vraiment le mail (sans via le dns qui pour moi est etph.be). J'espere avoir ete assez clair lol pas facile a expliquer.

Par contre je constate que sur mon mail professionnel cela bloquer toujours. Y a de quoi se tirer une balle !

Re: Probleme avec mon script de contact

par abelthorne » 13 août 2009, 14:03

Tu veux dire que c'est ton adresse à toi (expéditeur) qui est sur liste noire ou bien tu envoies les mails à [email protected] avec un champ From sous la forme "From: [email protected]"

EDIT : je viens de voir ton edit. En fait ton From (pour qu'on puisse te répondre) est du genre expé[email protected] alors que le mail est envoyé depuis tonsite.com ? Ou bien le problème vient du fait que le mail est identifié comme venant de l'hébergeur de ton site (OVH, 1and1...) ?
Si tu utilises une adresse en @tonsite.com pour le champ From, ça pose problème aussi ?

Re: Probleme avec mon script de contact

par Djeff » 13 août 2009, 13:45

bon je viens de lire sur un forum concurrent que cela viens du spoofing (usurpation) de l'adresse du contact.

Il semble que le fait de mettre en from : l'adresse de la personne qui a rempli le message fasse que le recepteur du mail repére que ce n'est pas vraiment lui qui envois le mail mais le site web.

Maintenant il va falloir trouver une astuce ne continue.

EDIT :

Voila j'ai fait la vérif, il s'agit bien de cela! la boit qui recois vérifie l'adresse mail de l'envoyeur et constate qu'elle viens d'un autre fournisseur. D'où elle semble la concidérer comme du spam.

exemple: le from viens de "[email protected]" comme votre site se trouve sur www.xxx.fr la boite repere que le mail viens de xxx.fr et non yahoo.fr d'ou spam.

Re: Probleme avec mon script de contact

par abelthorne » 13 août 2009, 13:35

Peut-être voir du côté des entêtes (headers) du mail, que Hotmail estimerait insuffisamment renseignés, ce qui le conduirait à classer le mail comme spam ?
J'étais tombé sur un site qui conseillait de mettre au minimum le reply, le mimetype et l'encodage. Voici ce que j'ai comme entêtes quand j'envoie des mails (mais je n'ai jamais vraiment fait de tests avec Hotmail) :
$headers="From: ".$from."\r\n";
$headers.="Reply-to: ".$replyto."\r\n";
$headers.="MIME-Version: 1.0\n";
$headers.="Content-type: text/plain; charset=iso-8859-15\n";

Re: Probleme avec mon script de contact

par Djeff » 13 août 2009, 13:20

Oui je comprend cela mais je ne sais pas mettre plus! j'ai bien l'email de la personne et le sujet du mail mais il le classe dans les spams donc si la plupart des utilisateur qui vont laisser un message ne recevrons pas leur copie. Si quelqu'un avais une solution, je cherche de mon coté mais ne trouve pas grand chose !

Re: Probleme avec mon script de contact

par monintranet » 13 août 2009, 13:17

par contre je me rend compte d'autre chose, le mail est classé comme spam sur plusieur boite comme hotmail ! quelqu'un a une solution pour eviter cela ??
Il faut que l'envoyeur soit bien identifié et qu'il y ait un sujet... A part cela, je ne vois pas trop...

Re: Probleme avec mon script de contact

par Djeff » 13 août 2009, 13:12

ok j'ai trouvé c'est plus con que ca !!
dans le code de la page de traitement, je ne chargais pas toute les variables ! dans mail()
if (mail($cible, $objet, $message, $headers))
par contre je me rend compte d'autre chose, le mail est classé comme spam sur plusieur boite comme hotmail ! quelqu'un a une solution pour eviter cela ??

Re: Probleme avec mon script de contact

par jobard52 » 13 août 2009, 13:07

Bonjour,

Peut être que ce que je dirais n'a pas d'intérêt mais est-ce vraiment utile lors de la récupération des données de mettre:
rec($POST...)
En effet je ne connais pas ce req mais je pense que cela passerait très bien sans.

Je ne sais pas du tout si le problème vient de cela mais essaye toujours comme ça, sait on jamais:

Code : Tout sélectionner

$societe = (isset($_POST['societe'])) ? $_POST['societe'] : '';
Si le rec fait partis des normes je m'excuse de cette lacune de ma part.

Re: Probleme avec mon script

par Cobaye » 12 août 2009, 16:18

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

Probleme avec mon script de contact

par Djeff » 12 août 2009, 15:16

Bonjour,

Avant tout je voulais remercier ceux qui vont prendre le temp de lire !

Voici j'ai un probleme avec le script suivant. J'ai plusieur champs "societe" "nom" "email" "tel" "fax" "objet" "message".
Lorsque l'on est sur le site, je script controle bien que tout les champs soit remplis, mais lors de l'envois, je ne recois que le champs message les autres champs ne sont pas prix en compte. Pouvez-vous m'aider ?
Voici les deux pages (la premiere est le visuel et la second est le fichier d'envois).

Merci a tout ceux qui trouverons une solution.

page 1 contright.php
<div id="arbo">
 	<strong>Vous &ecirc;tes ici :</strong> <i>Accueil > Bienvenue sur ETPH.BE ! > contact</i>
</div>
<br />
<form id="contact" method="post" action="fr/contact/traitement_formulaire.php">

	<fieldset><legend>Vos coordonnées :</legend>
	<table>
		<tr><td valign="baseline"><p><label for="societe">Société :</label></td><td><input type="text" id="societe" name="societe" tabindex="1" /></p></td></tr>
		<tr><td valign="baseline"><p><label for="nom">Nom :</label></td><td><input type="text" id="nom" name="nom" tabindex="2" /></p></td></tr>
		<tr><td valign="baseline"><p><label for="email">Email :</label></td><td><input type="text" id="email" name="email" tabindex="3" /></p></td></tr>
		<tr><td valign="baseline"><p><label for="tel">Tel :</label></td><td><input type="text" id="tel" name="tel" tabindex="4" /></p></td></tr>
		<tr><td valign="baseline"><p><label for="fax">Fax :</label></td><td><input type="text" id="fax" name="fax" tabindex="5" /></p></td></tr>
	</table>	
	</fieldset>
<br />
	<fieldset><legend>Votre message :</legend>
	<table>
		<tr><td valign="baseline"><p><label for="objet">Objet :</label></td><td>    <input type="text" id="objet" name="objet" tabindex="6" /></p></td></tr>
		<tr><td valign="top"><p><label for="message">Message :</label></td><td><textarea id="message" name="message" tabindex="7" cols="30" rows="8"></textarea></p></td></tr>
	</table>		
	</fieldset>

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


page 2 traitement_formulaire.php
<?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 = 'non'; // 'oui' ou 'non'

	// 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.";

	// Messages d'erreur du formulaire
	$message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer le formulaire</a>.";
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

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

	// on teste si le formulaire a été soumis
	if (!isset($_POST['envoi']))
	{
		// formulaire non envoyé
		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
	}
	else
	{
		/*
		 * 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;
		};

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

		// 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é

		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 = 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>'."\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="javascript:window.history.go(-1)">Retour au formulaire</a></p>'."\n";
		};
	}; // fin du if (!isset($_POST['envoi']))
?>