Mammouth du PHP |
19672 Messages
04 déc. 2005, 10:59
Bon, je crois que j'ai trouvé. J'ai quand même repris l'ensemble de la page pour structurer différemment le code. D'abord, le début de la page, en-tête html qui sera le même avant ou après traitement. Ensuite le test et le traitement, ensuite, selon qu'on a traité ou pas, le message de remerciement ou le formulaire. J'ai fait ça rapidement et au passage, j'ai noté une chose: à l'attribut "action" de ta balise <form>, tu as mis $PHP_SELF : il y a fort à parier que rien n'est envoyé du tout. Remplace par $_SERVER['PHPSELF'].
Proposition de correction globale:
<html>
<head>
<title>Inscription en ligne-Online regsitration</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.champ1.value == "")
{
alert("Inscrire votre prénom SVP-Please enter first name")
return false
}
if (mail_form.champ2.value == "")
{
alert("Inscrire votre nom SVP-Please enter last name")
return false
}
if (mail_form.champ3.value == "")
{
alert("Inscrire votre adresse SVP-Please enter address")
return false
}
if (mail_form.champ4.value == "")
{
alert("Inscrire la ville SVP-Please enter city")
return false
}
if (mail_form.champ5.value == "")
{
alert("Inscrire le code postal SVP-Please enter ZIP code")
return false
}
if (mail_form.champ6.value == "")
{
alert("Inscrire le pays SVP-Please enter country")
return false
}
if (mail_form.champ7.value == "")
{
alert("Inscrire votre date de naissance SVP-Please enter date of birth")
return false
}
if (mail_form.zone_email.value == "")
{
alert("Inscrivez votre adresse email-Please enter email address")
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
}
} // Fin de la fonction
</script>
</head>
<body>
<?php
if (isset($_POST['envoi']))
{
$message_remerciement = "Merci! Votre inscription sera traitée dans les plus brefs délais - Thank you! Your registration will be processed with no delay";
$email_dest = "[email protected]";
// E-mail headers:
$headers ="MIME-Version: 1.0 \r\n";
$headers .="From: Inscription 69Nord<Inscription 69nord>\r\n";
$headers .="Content-Type: text/html; charset=iso-8859-1 \r\n";
$subject = "Inscription en ligne";
$partie_entete = "<html>\n";
$partie_entete .= "<head>\n";
$partie_entete .= "<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>\n";
$partie_entete .= "</head>\n";
$partie_entete .= "<body bgcolor=#FFFFFF>\n";
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>\n";
}
if ($_POST['nbre_zone_email'] != 0)
{
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>\n";
}
if ($_POST['nbre_zones_texte'] != 0)
{
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>\n";
$partie_zone_texte = stripslashes($partie_zone_texte);
}
$fin = "</body>\n</html>\n";
$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
if (isset($message_remerciement) && !empty($message_remerciement))
{
?>
<p><font face="Verdana" size="2">
<?php
echo(stripslashes($message_remerciement));
?>
</font></p>
</body>
</html>
<?php
}
else
{
?>
<!-- j'ai enleve tout ce qui est avant le formulaire, inutile ici... -->
<form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
<div align="center"></div>
<p align="center">
<table width="694" border="0" align="left">
<p align="center"> </p>
<tr>
<td><font color="#000066" size="2" face="Verdana"><strong>Prénom/First name</strong></font></td>
<td><input name="champ1" type="text"></td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana"><strong>Nom/Last name</strong></font></td>
<td><input name="champ2" type="text"></td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana"><strong>Rue/Street address</strong></font></td>
<td><input name="champ3" type="text"></td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana"><strong>Ville/City</strong></font></td>
<td><input name="champ4" type="text"></td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana"><strong>Code postal/ZIP</strong></font></td>
<td><input name="champ5" type="text"></td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana"><strong>Pays/Country</strong></font></td>
<td><input name="champ6" type="text"></td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana"><strong>Date de naissance/DoB</strong></font></td>
<td><input name="champ7" type="text"></td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana">Telephone/Phone</font></td>
<td><input name="champ8" type="text"></td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana">Fax</font></td>
<td><input name="champ9" type="text"></td>
</tr>
<tr>
<td width><font color="#000066" size="2" face="Verdana"><strong>Email</strong></font></td>
<td width><input name="zone_email" type="text"></td>
</tr>
<tr valign="top">
<td> <strong><font color="#000066" size="2" face="Verdana, Arial, Helvetica, sans-serif">Croisière choisie:</font></strong><br> </td>
<td>
<select name="croisiere" id="croisiere">
<option value="choix" selected>Choisissez - Select one</option>
<option value="sej1-norv-spits 21 mai">Séjour 1: Norvège-Spitsberg - 21 mai au 03 juin</option>
<option value="sej2-spitsNW 04 juin">Séjour 2: Spitsberg côte Nord-Ouest, 04 au 17 juin</option>
<option value="sej3-spitsNW 18 juin">Séjour 3: Spitsberg côte Nord Ouest, 18 juin au 1er juillet</option>
<option value="sej4-spitsNW 2 juillet">Séjour 4: Spitsberg côte Nord Ouest, 02 au 15 juillet</option>
<option value="sej5-spitsN 16 juillet">Séjour 5: Spitsberg côte Nord, 16 au 29 juillet</option>
<option value="sej6-spitsN 13 aout">Séjour 6: Spitsberg côte Nord, 13 au 26 août</option>
<option value="sej7-spits.JM.Norv. 27 aout">Séjour 7: Spitsberg-Jan Mayen-Norvege, 27 août au 11 septembre</option>
<option value="sej8-tysfjord 22 oct.">Séjour 8: Tysfjord, 22 octobre au 4 novembre</option>
<option value="para-voile 30 juillet">Parapente - Voile: Spitsberg, 30 juillet au 12 août</option>
<option value="ski-voile">Ski - Voile: Tromso, 4 mars - 22 avril</option>
</select>
</td>
</tr>
<tr>
<td><font color="#000066">Experience:</font></td>
<td>
<select name="experience" id="experience">
<option value="experience" selected>Choisissez- Select one</option>
<option value="sans">Sans experience - None</option>
<option value="cotiere">Côtière - Coastal navigation</option>
<option value="hauturiere">Hauturière - Open waters</option>
</select>
</td>
</tr>
<tr>
<td><font color="#000066" size="2" face="Verdana"><strong>Combien de personnes? / How many people?</strong></font></td>
<td><input name="champ10" type="text"></td>
</tr>
<tr valign="top">
<td>
<p><font color="#000066" size="2" face="Verdana">Questions?</font><br>
</p>
</td>
<td><textarea name="zone_texte" cols="60" rows="5"></textarea></td>
</tr>
<tr valign="middle">
<td height="8" colspan="2"><div align="center"><img src="/images/gif/500_by_1_blue.gif" width="500" height="1"></div></td>
</tr>
<tr>
<td valign="top">
<input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="10">
<input name="nbre_zones_texte" type="hidden" value="1"> <input name="nbre_zone_email" type="hidden" value="1">
<input name="nbre_zone_croisiere" type="hidden" value="10"> <input name="nbre_zone_experience" type="hidden" value="3">
<input name="titre_champ1" type="hidden" value="Prénom-First name">
<input name="titre_champ2" type="hidden" value="Nom-Last name">
<input name="titre_champ3" type="hidden" value="Rue-Street address">
<input name="titre_champ4" type="hidden" value="Ville-City"> <input name="titre_champ5" type="hidden" value="Code postal-ZIP">
<input name="titre_champ6" type="hidden" value="Pays-Country"> <input name="titre_champ7" type="hidden" value="Date de naissance-DoB">
<input name="titre_champ8" type="hidden" value="Telephone"> <input name="titre_champ9" type="hidden" value="Fax">
<input name="titre_champ10" type="hidden" value="nbre personnes">
<input name="titre_email" type="hidden" value="Email"> <input name="titre_zone" type="hidden" value="Questions?">
<input name="titre_croisiere" type="hidden" value="croisiere"> <input name="titre_experience" type="hidden" value="experience">
</td>
<td><div align="center">
<input type="submit" name="envoi" value="Envoyer">
<input type="reset" name="Reset" value="Effacer">
</div>
</td>
</tr>
</table>
<div align="center"></div>
</form>
</td>
</tr>
</table>
</body>
</html>
<?php
}
?>
Tout ceci est bien entendu basique, je n'ai pas poussé dans les détails. Pour comprendre une validation d formulaire, télécharge
cet exemple complet et suis bien les commentaires du code.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse 