11548 sujets

JavaScript, DOM et API Web HTML5

Amis du jour bonjour,

J'ai de nouveau un problème insondable et j'espère que vous m'éclairerez de vos lumières. Smiley ravi

J’ai récupéré un formulaire qui permet d’envoyé un mail. Ce formulaire à été conçu pour être seul sur une page. Or j’ai du l’adapter pour le mettre au centre d’une autre page. Je ne suis pas sur d’être claire mais vous allez mieux comprendre avec les sources.

Dans le cas ou certain champs ne serait pas complété une pop up alerte l'internaute et empêche l’envoi du mail (via du JavaScript donc). Le problème c'est qu’après adaptation du code comme d'écrit ci-dessus les pop up ne s’affichent plus sous Firefox et Netscape (Firefox mentionne une erreur dans le JavaScript à la ligne 2, voir source plus bas).

Mais là ou ça devient étrange c’est qu’après de longue recherche je me suis rendu compte qu’en enlevant le DocType tout est à nouveau fonctionnel Smiley biggol

Je ne connais rien au JavaScript, je ne pense même pas que le problème vienne de là. Donc si vous avez une solution gardez en tête que je suis un débutant en xhtml, tâtonne le php et ignorent tout du JavaScript.

Code du formulaire mail original :
<?php

$email_dest = "contact@domaine.fr";

if ($_POST['envoi']) {

$message_remerciement = "Le message à bien été envoyé  [smile]";

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: Contact CXP<contact@domaine.fr>\n";


$headers .="Content-Type: text/html; charset=iso-8859-1 \n";

$subject = "Une personne vous a contacté";

$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}

if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}

if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$fin = "</body></html>";

$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} // Closing if !mail...

} // Closing if edit
?><html>
<head>
<title>Assistant d'envoi de formulaires</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript"><!-- Hide script from older browsers
function verifSelection() {if (mail_form.zone_email.value == "") {
alert("Vous n’avez pas saisie d’adresse e-mail !")
return false
}

invalidChars = " /:,;'"

for (i=0; i<invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}

atPos = mail_form.zone_email.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

periodPos = mail_form.zone_email.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (periodPos+3 > mail_form.zone_email.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}if (mail_form.zone_texte.value == "") {
alert("Vous n’avez pas saisie de message !")
return false
} } // Fin de la fonction

</script>
</head>

<body>
<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
  <div align="center"></div>
<p align="center">
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></body></html>");
exit();
}
?>
  <table width="566" border="0" align="center">
<p align="center">
</p><tr>
      <td width><font face="Verdana" size="2">Veuillez saisir votre adresse e-mail</font></td>
      <td width><input name="zone_email" type="text"></td>
    </tr><tr>
      <td valign="top"><font face="Verdana" size="2">Votre message</font></td>
      <td><textarea name="zone_texte" cols="50" rows="10"></textarea></td>
    </tr><tr>
      <td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="0">
        <input name="nbre_zones_texte" type="hidden" value="1">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_email" type="hidden" value="Veuillez saisir votre adresse e-mail"><input name="titre_zone" type="hidden" value="Votre message"></td>
      <td><div align="center">
<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
        </div></td>
    </tr>
  </table>
  <div align="center"></div>
</form>
</body>
</html>


Code du formulaire mail adapté à mes besoin (notez que le JavaScript à été séparé):
<!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>
		<title>Le site</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link rel="stylesheet" media="screen" type="text/css" title="Design en css" href="templates/********/css/index.css" />
		<link rel="stylesheet" media="screen" type="text/css" title="Design en css" href="templates/********/css/menu.css" />
		<script type="text/javascript" src="script/contact.js"></script>
		<script type="text/javascript" src="templates/********/script/menu.js"></script>
	</head>
	<body>
		<? include("includes/header.php"); ?>
		<? include("includes/menu.php"); ?>	
		<div id="conteneur1" ><div id="conteneur2" >		

		
		
		
		
		
		
		
<?php

$email_dest = "contact@domaine.fr";

if ($_POST['envoi']) {

$message_remerciement = "Le message à bien été envoyé  [smile]";

// E-mail headers:

$subject = "Une personne vous a contacté";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}

if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}

if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$sortie = $partie_champs_texte . $partie_zone_email . $partie_zone_texte;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie)) {
echo("Envoi du formulaire impossible");
} // Closing if !mail...

} // Closing if edit
?>


<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
  <div class="centrer">
<p>
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></div>");
exit();
}
?>
<div class="centrer">
	<p>Veuillez saisir votre adresse e-mail :</p>
	<input name="zone_email" type="text">

	<p>Votre message :</p>
	<textarea name="zone_texte" cols="50" rows="10"></textarea>

	<input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="0">
    <input name="nbre_zones_texte" type="hidden" value="1">
	<input name="nbre_zone_email" type="hidden" value="1">
	<input name="titre_email" type="hidden" value="Veuillez saisir votre adresse e-mail"><input name="titre_zone" type="hidden" value="Votre message">
	
<br /><br />
<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
</div>
</form>







		
		</div></div>
		
		<? include("includes/footer.php"); ?>
		
	</body>
</html>


contact.js
<!-- Hide script from older browsers
function verifSelection() {if (mail_form.zone_email.value == "") {
alert("Vous n’avez pas saisie d’adresse e-mail !")
return false
}

invalidChars = " /:,;'"

for (i=0; i<invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}

atPos = mail_form.zone_email.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

periodPos = mail_form.zone_email.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (periodPos+3 > mail_form.zone_email.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}if (mail_form.zone_texte.value == "") {
alert("Vous n’avez pas saisie de message !")
return false
} } // Fin de la fonction



Voilà tout et merci d'avance Smiley smile

PS : je vous aies présenté ma page dans sont entier, en réalité j'utilise une include pour insérer le formulaire dans le conteneur du centre.
Modifié par Spark (20 Jan 2007 - 00:27)
<!-- Hide script from older browsers

Pourquoi cette ligne là dans ton contact.js ?

Les "older browsers" ne vont tout simplement pas suivre tes éléments <script></script>, donc ne verront jamais le contenu de tes .js.

Inutile, par conséquent, de leur cacher quoi que ce soit à ce niveau Smiley smile

(HS : la prévisualisation merdouille encore, apparemment à cause du commentaire HTML)
djfeat a écrit :
<!-- Hide script from older browsers

Pourquoi cette ligne là dans ton contact.js ?


Je me suis posé la même question (je n'ai fais qu'un copier/coller du code original), j'avais essayé de le supprimer, mais sans résultat.

EDIT : il y a un problème avec le code source original que je vous ai fourni, il manque la partie JavaScript Smiley sweatdrop
Je vais corriger ça au plus vite.

EDIT2 : c'est corrigé.
Modifié par Spark (14 Nov 2006 - 17:53)
Bonsoir.

Il y a plein de problèmes dans le code source html (balises input non-fermées) div et p qui ne s'imbriquent pas...

Quand vous enlevez le doctype, vous n'êtes plus en xhtml, et le code javascript s'exécute.
Par contre, en mettant le doctype sur un document non-valide, cela ne peut plus marcher.

Il faut donc corriger le code pour obtenir du html valide. Le javascript n'est pas directement en cause.

Mais, mais, mais, mais...

quand le code sera pile-poil, ça ne marchera toujours pas, à moins d'apporter deux petites corrections :


<form name="mail_form" method="post" action="" onSubmit="return verifSelection(this)">


Notez le "this"...

et au tout début du fichier js :


function verifSelection(mail_form) {...

Notez "mail_form" en parametre.

Ces deux modifications visent à transmettre le noeud DOM à la fonction javascript, transmission qui se faisait mystérieusement dans le script original.

Voilà. Mais là où vous aller avoir du boulot, c'est la mise au carré du code...
Bon courage.

PS: le javascript serait tout de même plus léger avec des expressions régulières, non?
Modifié par GeorgesM (14 Nov 2006 - 22:50)
GeorgesM a écrit :
Il y a plein de problèmes dans le code source html (balises input non-fermées) div et p qui ne s'imbriquent pas...


Je vais devoir avoir beaucoup de patience et de courage comme vous le dites Smiley lol

Merci encore une fois de m'aider j'apprécie vraiment !


GeorgesM a écrit :
PS: le javascript serait tout de même plus léger avec des expressions régulières, non?


"expressions régulières" qu'est ce ?


Si je ne suis pas trop fatigué je regarderaistout ca se soir, sinon ca sera pour demain.

Encore merci GeorgesM.

Smiley smile
... ce que ça donne avec les expressions rationnelles...

/** contact.js */

/** Fonction utilitaire pour Tester une expression rationnelle
@param s string la chaîne à étudier
@param regex regex une expression rationnelle
@return boolean true si l'expression renvoie un résultat, false autrement.
*/
function checkReg(s,regex)
{
	if (!regex.test(s))
		return false;
	return true;
}

/** Vérifier un email
@mail_form domNode représentant un formulaire html
@return boolean true en cas de succès, false en cas d'echec.
Cette fonction analyse la valeur d'un champ d'un formulaire
et informe de l'invalidité éventuelle avec des alertes.
*/
function verifSelection(mail_form)
{
	value = mail_form.zone_email.value;

	regexAt = /^[a-zA-Z][a-zA-Z0-9-_\.]*@/;
	regexMultiAt = /^[a-zA-Z][a-zA-Z0-9-_\.]*@.*@+/;
	regexDot = /^[a-zA-Z][a-zA-Z0-9-_\.]+@[a-zA-Z]+\./;
	regexMail = /^[a-zA-Z][a-zA-Z0-9-_\.]+@[a-zA-Z]+\.[a-zA-Z]{2,6}$/;
	regexInvalid = /[^a-zA-Z0-9-_@\.]/;

	if (value == "")
	{
		alert("Vous n’avez pas saisie d’adresse e-mail !")
		return false;
	}

	if (checkReg(value,regexInvalid))
	{
		alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.");
		return false;
	}

	if (!checkReg(value,regexAt))
	{
		alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.');
		return false;
	}

	if (checkReg(value,regexMultiAt))
	{
		alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier..');
		return false;
	}

	if (!checkReg(value,regexDot))
	{
		alert('Vous avez oublié le point "." ou des caractères après le signe "@". Veuillez vérifier.');
		return false;
	}

	if (!checkReg(value,regexMail))
	{
		alert('Il doit y avoir entre deux et six caractères après le signe ".". Veuillez vérifier.');
		return false;
	}
		else
		{
			alert(value + " est valide");	// Optionnel...
		}

	return true;
}
J'ai pas (trop) regardé ton source .js mais as-tu fais appel au débogueur Javascript intégré à Firefox ? C'est une mine d'informations très utile et autrement plus complète que le simple "Erreur ligne tant du fichier truc" d'IE. Couplé à l'inspecteur DOM tu repèreras ton/tes erreurs avant même d'avoir eu le temps de rédiger un message d'aide Smiley smile
Spark a écrit :
1) La ligne :

<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">


Hors-sujet, mais afficher PHP_SELF comme ça permet de faire des choses dangereuses. Si je met du code HTML dans l'url, genre :
pouet.php?<script>alert(document.cookies)</script>

Y'a moyen d'être méchant Smiley decu
FlorentG a écrit :
Hors-sujet, mais afficher PHP_SELF comme ça permet de faire des choses dangereuses. Si je met du code HTML dans l'url, genre :
pouet.php?<script>alert(document.cookies)</script>

Y'a moyen d'être méchant Smiley decu
Hors-sujet en effet, puisque PHP_SELF ne contient pas les paramètres, me semble-t-il. Smiley langue

Par contre, peut-être que quelque chose du genre
pouet.php/<script>alert(document.cookies)</script>
pourrait marcher.
Je sais pas à quoi sert cette variable, j'ai également testé ce que vous avez dis, ça n'a rien fait.
Smiley confused
Eldebaran a écrit :
Par contre, peut-être que quelque chose du genre
pouet.php/<script>alert(document.cookies)</script>
pourrait marcher.

Euh oui, autant pour moi, faute de frappe Smiley lol
J'ai bien tout repris depuis le début et cette fois tout fonctionne, comme vous l'avez dit GeorgesM.

Je suis vraiment content !


Toutefois j'ai changé <form name="mail_form" en <form id="mail_form"

Et :

<form id="mail_form" method="post" action="" on[#red]S[/#]ubmit="return verifSelection(this)">


J'ai eu une illumination d'un coup après de longue recherche, le validateur n’a rien compris à l’erreur, c’était juste une majuscule dans l’attribut !

Et voilà le code est fonctionnel et 100% valide !


Encore merci GeorgesM ! Smiley biggrin


Merci aussi pour le code JavaScrit, j'ai ajouté ceci à la fin :
//		else {
//			alert(value + " est valide");	// Optionnel...
//		}


	if (mail_form.zone_texte.value == "") {
		alert("Vous n’avez pas saisie de message !")
		return false
	} 

		return true;	
}





Au sujet de PHP_SELF je suis ouvert à plus d'explication. Smiley smile
Modifié par Spark (17 Nov 2006 - 12:39)
FlorentG a écrit :


Hors-sujet, mais afficher PHP_SELF comme ça permet de faire des choses dangereuses. Si je met du code HTML dans l'url, genre :
pouet.php?<script>alert(document.cookies)</script>

Y'a moyen d'être méchant Smiley decu


... c'est très pertinent ...
Spark a écrit :
Amis du jour bonjour,

J'ai de nouveau un problème insondable et j'espère que vous m'éclairerez de vos lumières. Smiley ravi

J’ai récupéré un formulaire qui permet d’envoyé un mail. Ce formulaire à été conçu pour être seul sur une page. Or j’ai du l’adapter pour le mettre au centre d’une autre page. Je ne suis pas sur d’être claire mais vous allez mieux comprendre avec les sources.

Dans le cas ou certain champs ne serait pas complété une pop up alerte l'internaute et empêche l’envoi du mail (via du JavaScript donc). Le problème c'est qu’après adaptation du code comme d'écrit ci-dessus les pop up ne s’affichent plus sous Firefox et Netscape (Firefox mentionne une erreur dans le JavaScript à la ligne 2, voir source plus bas).

Mais là ou ça devient étrange c’est qu’après de longue recherche je me suis rendu compte qu’en enlevant le DocType tout est à nouveau fonctionnel Smiley biggol

Je ne connais rien au JavaScript, je ne pense même pas que le problème vienne de là. Donc si vous avez une solution gardez en tête que je suis un débutant en xhtml, tâtonne le php et ignorent tout du JavaScript.

Code du formulaire mail original :
<?php

$email_dest = "contact@domaine.fr";

if ($_POST['envoi']) {

$message_remerciement = "Le message à bien été envoyé  [smile]";

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: Contact CXP<contact@domaine.fr>\n";


$headers .="Content-Type: text/html; charset=iso-8859-1 \n";

$subject = "Une personne vous a contacté";

$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}

if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}

if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$fin = "</body></html>";

$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} // Closing if !mail...

} // Closing if edit
?><html>
<head>
<title>Assistant d'envoi de formulaires</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript"><!-- Hide script from older browsers
function verifSelection() {if (mail_form.zone_email.value == "") {
alert("Vous n’avez pas saisie d’adresse e-mail !")
return false
}

invalidChars = " /:,;'"

for (i=0; i<invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}

atPos = mail_form.zone_email.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

periodPos = mail_form.zone_email.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (periodPos+3 > mail_form.zone_email.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}if (mail_form.zone_texte.value == "") {
alert("Vous n’avez pas saisie de message !")
return false
} } // Fin de la fonction

</script>
</head>

<body>
<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
  <div align="center"></div>
<p align="center">
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></body></html>");
exit();
}
?>
  <table width="566" border="0" align="center">
<p align="center">
</p><tr>
      <td width><font face="Verdana" size="2">Veuillez saisir votre adresse e-mail</font></td>
      <td width><input name="zone_email" type="text"></td>
    </tr><tr>
      <td valign="top"><font face="Verdana" size="2">Votre message</font></td>
      <td><textarea name="zone_texte" cols="50" rows="10"></textarea></td>
    </tr><tr>
      <td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="0">
        <input name="nbre_zones_texte" type="hidden" value="1">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_email" type="hidden" value="Veuillez saisir votre adresse e-mail"><input name="titre_zone" type="hidden" value="Votre message"></td>
      <td><div align="center">
<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
        </div></td>
    </tr>
  </table>
  <div align="center"></div>
</form>
</body>
</html>


Code du formulaire mail adapté à mes besoin (notez que le JavaScript à été séparé):
<!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>
		<title>Le site</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link rel="stylesheet" media="screen" type="text/css" title="Design en css" href="templates/********/css/index.css" />
		<link rel="stylesheet" media="screen" type="text/css" title="Design en css" href="templates/********/css/menu.css" />
		<script type="text/javascript" src="script/contact.js"></script>
		<script type="text/javascript" src="templates/********/script/menu.js"></script>
	</head>
	<body>
		<? include("includes/header.php"); ?>
		<? include("includes/menu.php"); ?>	
		<div id="conteneur1" ><div id="conteneur2" >		

		
		
		
		
		
		
		
<?php

$email_dest = "contact@domaine.fr";

if ($_POST['envoi']) {

$message_remerciement = "Le message à bien été envoyé  [smile]";

// E-mail headers:

$subject = "Une personne vous a contacté";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}

if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}

if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$sortie = $partie_champs_texte . $partie_zone_email . $partie_zone_texte;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie)) {
echo("Envoi du formulaire impossible");
} // Closing if !mail...

} // Closing if edit
?>


<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
  <div class="centrer">
<p>
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></div>");
exit();
}
?>
<div class="centrer">
	<p>Veuillez saisir votre adresse e-mail :</p>
	<input name="zone_email" type="text">

	<p>Votre message :</p>
	<textarea name="zone_texte" cols="50" rows="10"></textarea>

	<input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="0">
    <input name="nbre_zones_texte" type="hidden" value="1">
	<input name="nbre_zone_email" type="hidden" value="1">
	<input name="titre_email" type="hidden" value="Veuillez saisir votre adresse e-mail"><input name="titre_zone" type="hidden" value="Votre message">
	
<br /><br />
<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
</div>
</form>







		
		</div></div>
		
		<? include("includes/footer.php"); ?>
		
	</body>
</html>


contact.js
<!-- Hide script from older browsers
function verifSelection() {if (mail_form.zone_email.value == "") {
alert("Vous n’avez pas saisie d’adresse e-mail !")
return false
}

invalidChars = " /:,;'"

for (i=0; i<invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}

atPos = mail_form.zone_email.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

periodPos = mail_form.zone_email.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (periodPos+3 > mail_form.zone_email.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}if (mail_form.zone_texte.value == "") {
alert("Vous n’avez pas saisie de message !")
return false
} } // Fin de la fonction



Voilà tout et merci d'avance Smiley smile

PS : je vous aies présenté ma page dans sont entier, en réalité j'utilise une include pour insérer le formulaire dans le conteneur du centre.