Bonsoir à tous,

Je suis inscrite depuis quelques minutes car j'essaie de faire un site simple pour un groupe de musique et... je suis comptable (entendez ma détresse) ...
Donc forcément, je bidouille, reprends des tutos et des "modèles-tout-faits" mais là... Je n'arrive plus à comprendre.

J'ai tenté une recherche mais ne trouve pas non plus de réponses.
Aussi, je poste donc là ma question Smiley smile !

Le site a un formulaire de contact intégré.
Bien sûr, je ne veux pas me servir du "mailto:" et j'ai donc tenté de l'envoyer via du php.
Problème, à l'envoi du message, une nouvelle fenêtre s'ouvre pleine de code bizarre.
Étant plus que novice, je ne sais absolument pas d'où vient l'erreur (les erreurs, d'ailleurs sûrement).
Je précise qu'il s'agit que mes codes et sources proviennent de templates et autres modèles et/ou tuto gratuits.

Voici mes codes ci-dessous, ainsi que la page bizarre qui s'ouvre à l'envoi.
Si quelqu'un peut m'aider à finaliser ce formulaire, ce serait génial, je vous paierai une bière si vous venez nous voir en concert (offre valable pour les 3 premier(ère)s à répondre Smiley cligne !)

Code HTML :
<form id="contact-form" method="post" action="contact.php">
				<div>
					<label for="nom">
							<span>C&rsquo;est quoi ton nom ?</span>
							<input placeholder="Renseigne ton nom ou ton pr&eacute;nom, ca suffit" type="text" id="nom" name="nom" tabindex="1">
					</label>
				</div>
				<div>
					<label for="email">
							<span>C&rsquo;est quoi ton mail ?</span>
							<input placeholder="Renseigne ton adresse mail" type="email" id="email" name="email" tabindex="2">
					</label>
				</div>
				<div>
					<label for="tel">
							<span>Pas de pression, mais... tu as un t&eacute;l&eacute;phone ?</span>
							<input placeholder="Renseigne un num&eacute;ro pour qu&rsquo;on t&rsquo;appelle &agrave; pas d'heure" type="text" id="nom" name="nom" tabindex="3">
					</label>
				</div>
				<div>
					<label for="message">
							<span>Laisse nous ton message</span>
							<textarea placeholder="Veux-tu qu&rsquo;on joue, qu&rsquo;on fasse des gaufres, qu&rsquo;on boive des bieres ?" type="text" id="message" name="message" tabindex="4"></textarea>
					</label>
				</div>
				<div>
						<button name="envoi" type="submit" id="contact-submit">Envoyer</button>
				</div>
	</form>


Code PHP :
<?php
/*
	********************************************************************************************
	CONFIGURATION
	********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'monadresse@live.fr';

// 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 = 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\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(? [decu]? [decu]?:[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_]?)|(?:\[(? [decu]?:[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'])   : '';
$tel     = (isset($_POST['tel']))     ? Rec($_POST['tel'])     : '';
$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é
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

if (isset($_POST['envoi']))
{
	if (($nom != '') && ($email != '') && ($tel != '') && ($message != ''))
	{
		// les 4 variables sont remplies, on génère puis envoie le mail
		$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
				'Reply-To:'.$email. "\r\n" .
				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
				'Content-Disposition: inline'. "\r\n" .
				'Content-Transfer-Encoding: 7bit'." \r\n" .
				'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("&#039;","'",$message);
		$message = str_replace("&#8217;","'",$message);
		$message = str_replace("&quot;",'"',$message);
		$message = str_replace('<br>','',$message);
		$message = str_replace('<br />','',$message);
		$message = str_replace("&lt;","<",$message);
		$message = str_replace("&gt;",">",$message);
		$message = str_replace("&amp;","&",$message);

		// Envoi du mail
		$num_emails = 0;
		$tmp = explode(';', $cible);
		foreach($tmp as $email_destinataire)
		{
			if (mail($email_destinataire, $tel, $message, $headers))
				$num_emails++;
		}

		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
		{
			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 'Merci pour ton message !';
};
?>



Code bizarre qui s'ouvre à l'envoi :

' . "\r\n" . 'Reply-To:'.$email. "\r\n" . 'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" . 'Content-Disposition: inline'. "\r\n" . 'Content-Transfer-Encoding: 7bit'." \r\n" . '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("’","'",$message); $message = str_replace(""",'"',$message); $message = str_replace('
','',$message); $message = str_replace('
','',$message); $message = str_replace("<","<",$message); $message = str_replace(">",">",$message); $message = str_replace("&","&",$message); // Envoi du mail $num_emails = 0; $tmp = explode(';', $cible); foreach($tmp as $email_destinataire) { if (mail($email_destinataire, $tel, $message, $headers)) $num_emails++; } if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1))) { echo '

'.$message_envoye.'
'; } else { echo '

'.$message_non_envoye.'
'; }; } else { // une des 3 variables (ou plus) est vide ... echo '

'.$message_formulaire_invalide.'
'; $err_formulaire = true; }; }; // fin du if (!isset($_POST['envoi'])) if (($err_formulaire) || (!isset($_POST['envoi']))) { // afficher le formulaire echo 'Merci pour ton message !'; }; ?>
Bonjour,
Je ne regardes pas tout ton code, puisque tu écrit cela comme si la partie PHP était a l'écoute du visiteur de ta page !
Le PHP ne s'exécute que du coté serveur (hébergeur de ton site) le HTML les styles CSS et l'éventuel Javascript de ta page sont les seuls élément actif chez le visiteur et ne s’exécutent que du coté client !
Bonjour.

Apparemment il y a un problème d'"écriture"...
À partir d'un certain endroit, le PHP, au lieu de faire quelque chose avec le code, l'affiche.

L'endroit concerné se trouve après :
 $headers .= 'From:'.$nom.' <'.$email.'>


Franchement, je n'en sais rien mais en ce qui me concerne, je ne colle pas les points de concaténation "." aux noms des variables... difficile à dire si le problème vient de là mais à part dans les chaînes de caractères, les espaces n'ont, a priori, aucune incidence en PHP.

Smiley smile
Bonjour et merci pour vos éléments de réponse.
Je vais m'y remettre ce soir et, surtout, suivre un tuto pas à pas Smiley smile !
Si je trouve, je reviendrai ici pour poster !
Bonne journée !
Bonjour,

Au contraire de Zelena j'ai l'impresion que ce qui semble poser problème sont les espaces (ou tabulations) disposées autour de tes points de concaténation et/ou les sauts de ligne.

Pour définir ta variable $headers, je te suggère de procéder ainsi plutôt que tel que tu l'as fait:
$headers  = 'MIME-Version: 1.0'."\r\n";
$headers .= "From:$nom <$email>\r\n";
$headers .= "Reply-To:$email\r\n";
$headers .= 'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n";
$headers .= 'Content-Disposition: inline'."\r\n";
$headers .= 'Content-Transfer-Encoding: 7bit'."\r\n";
$headers .= 'X-Mailer:PHP/'.phpversion();


Et maintenant ça donne quoi ?

Zelena a écrit :
en ce qui me concerne, je ne colle pas les points de concaténation "." aux noms des variables
Pour ma part, je les collent toujours, donc non ce détail n'influence pas le traitement.

A parte, je ne connais pas les attributs DelSp, Content-disposition et format=flowed. Je ne les utilise pas et de mon côté mon script fonctionne. Tu m'diras ma base n'est pas non plus la même, j'utilise pour mes envois de mails (qui réussissent à 100% et en html+txt) PHPMailer
Modifié par Greg_Lumiere (07 Oct 2016 - 09:47)
Hello Smiley smile

pas de soucis de concaténation si ce n'est le mélange entre ' et " faut choisir soit l'un soit l'autre bien que cela ne soit pas le vrai problème...

ce qui est bizarre c'est que d'un coup ta page php cesse de traiter du php... et cela juste après

$email.'> <-- et là je me dit à un moment si ça écrit un truc comme ça en vrai ?> ben le php cesse de fonctionner Smiley smile

donc il faut débugger Smiley smile

pour ça :

1) quels sont les valeurs que tu envoi dans le formulaire ??

2) faire un echo de la variable email pendant qu'il y a l'erreur et avant la concaténation.. idéalement là :
$headers  = 'MIME-Version: 1.0' . "\r\n";
echo $email;
		$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .

Là tu aura je pense toujours l'erreur mais tu saura ce qui est dans la variable email.

SI un ? apparait bah t'as ttrouvé l'erreur après faudra trouver pourquoi il colle un ? à cet endroit là :s
Merci à tous pour votre aide.

Je me rends compte que je me suis lancé dans quelque chose de bien trop compliqué vu que je n'ai aucune base (vos réponses amènent d'autres questions à mon cerveau... Smiley cligne !)
Je vais faire un "mailto", tant pis. Pour le moment, ça ira.
Mais merci de votre réactivité !

Bonne soirée à tous Smiley smile

NB : je marque le message comme résolu et je laisse le soin aux modérateurs de le supprimer si c'est nécessaire...