
bonjour, je me suis lancé dans l'élaboration d'un formulaire (en php mais avec aussi du javascript) et je rame complètement, malgré toutes les astuces que j'ai pues trouver ! alors : SOS !
Je viens encore de faire quelques modifs, je m'approche de ce que je voudrais, mais il y a encore quelques incompatibilités:
1 - Vérifier le nombre de mots dans les zônes concernées (si possible avec un 'compte à rebours'ou une alerte) 2 - Vérifier le nombre de caractères dans les zônes concernées (si possible avec un 'compte à rebours'ou une alerte ) cela fonctionne sur une ligne mais pas sur la deuxième !!! même en recopiant le même code ! 3 - n'accepter que des adresses mail valides dans les champs d'adresse (je ne sais pas si le procédé fonctionne bien !)
(il est à cette adresse:
[ Lien ])
voici le code:

<?php
// FAUT IL RECHANGER LES 'votresite.com" ?????
function email($destinataire, $sujet , $messtxt, $messhtml,$mailfrom,$namefrom="votresite.com")
{
$boundary = "_".md5 (uniqid (rand()));
$entete = "MIME-Version: 1.0\n";
$entete .= "X-Sender: <www.votresite.com>\n";
$entete .= "X-Mailer: PHP\n";
$entete .= "X-auth-smtp-user: webmaster@votresite.com \n";
$entete .= "X-abuse-contact: abuse@votresite.com \n";
$entete .= "Reply-to: $namefrom <$mailfrom>\n";
$entete .= "From:$namefrom <$mailfrom>\n";
//www-data@planet-work.com , dépend de votre hebergeur, envoyé vous un mail depuis la fonction mail sur une adresse non filtrée pour récuperer cette valeur
$entete .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";
$message = "--" . $boundary . "\n";
$message.= "This is a multi-part message in MIME format.\n\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $messtxt;
$message .= "\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= str_replace("=","=3D",$messhtml);
$message .= "\n\n";
return mail($destinataire, $sujet, $message, $entete);
}
// correction - - $email_dest = "bg62@free.fr";
$email_dest = "bg62@laposte.net";
if ($_POST['envoi']) {
$message_remerciement = "merci de votre demande je vous réponds au plus vite sur votre adresse mail";
$subject = "depuis refok";
$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
email($email_dest,$subject,$sortie,$sortie,$_POST['champ14'],$_POST['champ15']);
// LES CHAMPS SONT BONS ICI ??????????????????????????????????????
} // Closing if edit
?><html>
<head>
<title>envoi de formulaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript"><!-- Hide script from older browsers
//ORIGINAL<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
function checkwords(val1,maxlength){
var maxwords=maxlength
var temp=val1.split(" ")
if (temp.length>maxwords){
return false
}
else
{
return true;
}
}
//function verifSelection() {
//if (checkwords(mail_form.champ1.value,20)==false)
//{
// alert ("trop de mots pour le titre du site")
// return false;
//}
// PEUT ON METTRE UN TRUC DANS CE GENRE POUR VERIFIER LES AUTRES SELECTIONS ???? ET COMMENT INSERER ???
//function verifSelection2() {
//if (checkwords(mail_form.champ1.value,15)==false)
//{
//alert ("trop de mots pour MOTS CLEFS 1")
//return false;
//}
//function verifSelection3() {
//if (checkwords(mail_form.champ1.value,200)==false)
//{
//alert ("trop de mots pour MOTS CLEFS 2")
//return false;
//}
if (checkwords(mail_form.champ1.value,20)==false)
{
alert ("trop de mots pour le titre du site")
return false;
}
if (checkwords(mail_form.champ5.value,15)==false)
{
alert ("trop de mots pour les Mots clefs 1")
return false;
}
if (checkwords(mail_form.champ6.value,200)==false)
{
alert ("trop de mots pour les Mots clefs 2")
return false;
}
if (mail_form.champ1.value == "") {
alert("non rempli !")
return false
} if (mail_form.champ2.value == "") {
alert("non rempli !")
return false
} if (mail_form.champ3.value == "") {
alert("non rempli !")
return false
} if (mail_form.champ4.value == "") {
alert("non rempli !")
return false
} if (mail_form.champ5.value == "") {
alert("non rempli !")
return false
}} if (mail_form.champ6.value == "") {
alert("non rempli !")
return false
} if (mail_form.zone_email.value == "") {
alert("non rempli !")
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("non rempli !")
return false
} } // Fin de la fonction
</script>
<script type="text/javascript">
var ns6=document.getElementById&&!document.all
function restrictinput(maxlength,e,placeholder){
if (window.event&&event.srcElement.value.length>=maxlength)
return false
else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength){
var pressedkey=/[a-zA-Z0-9\.\,\/]/
if (pressedkey.test(String.fromCharCode(e.which)))
e.stopPropagation()
}
}
function countlimit(maxlength,e,placeholder){
var theform=eval(placeholder)
var lengthleft=maxlength-theform.value.length
var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder)
if (window.event||e.target&&e.target==eval(placeholder)){
if (lengthleft<0)
theform.value=theform.value.substring(0,maxlength)
placeholderobj.innerHTML=lengthleft
}
}
function displaylimit(thename, theid, thelimit){
var theform=document.getElementById(theid)
var limit_text='<b><span id="'+theform.toString()+'">'+thelimit+'</span></b> characteres Maximum.'
if (document.all||ns6)
document.write(limit_text)
if (document.all){
eval(theform).onkeypress=function(){ return restrictinput(thelimit,event,theform)}
eval(theform).onkeyup=function(){ countlimit(thelimit,event,theform)}
}
else if (ns6){
document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) }, true);
document.body.addEventListener('keyup', function(event) { countlimit(thelimit,event,theform) }, true);
}
}
</script>
</head>
<body>
<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
<div align="center">
<p><font color="#FF0000">comment faire pour :</font></p>
<p><font color="#FF0000">1</font><font color="#FF0000"><strong> - Vérifier
le <font size="+2">nombre de mots</font> dans les zônes concernées (si possible
avec un 'compte à rebours'ou une alerte)</strong> 2</font><font color="#FF0000"><strong>
- Vérifier le <font size="+2">nombre de caractères</font> dans les
zônes concernées (si possible avec un 'compte à rebours'ou une alerte )</strong></font><font color="#FF0000">
cela fonctionne sur une ligne mais pas sur la deuxième !!! même
en recopiant le même code ! 3 - n'accepter que des adresses mail valides
dans les champs d'adresse (je ne sais pas si le procédé fonctionne
bien !) </font></p>
</div>
<p align="center">
<p align="center">
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></body></html>");
exit();
}
?>
<p align="center"><strong>Attention ! tous les champs sont obligatoires ...
</strong>
<table width="566" border="0" align="center">
<p align="center"> </p>
<tr>
<td><font face="Verdana" size="2"><strong>Pour le Site:</strong> </font></td>
</tr>
<tr>
<td><p><font size="2" face="Verdana">Titre du Site</font></p></td>
<td><input name="champ1" type="text">
maximum 20 mots (Les majuscules ne sont pas recommandées)</td>
</tr>
<tr>
<td><font face="Verdana" size="2">URL du site</font></td>
<td><input name="champ2" type="text" size=100 ></td>
</tr>
<tr>
<td><font face="Verdana" size="2">Description courte</font></td>
<td><input id="champ3txtlimiter" name="champ3" type="text" size=100 maxlength=150>
maximum 150 caractères (tout caractère ou espace compte pour 1)
<script>
displaylimit("Limite","champ3txtlimiter",150)
</script></td>
</tr>
<tr>
<td><font face="Verdana" size="2">Description longue</font></td>
<td><input id="champ4txtlimiter" name="champ4" type="text" size=100 maxlength=150>
maximum 200 caractères (tout caractère ou espace compte
pour 1)</tr>
<tr>
<td><font face="Verdana" size="2">Mots clefs 1</font></td>
<td><input name="champ5" type="text" size=100 maxlength=150>
15 mots maximum, séparés par des " , " Ne pas mettre d'espaces
avant ou après les virgules.</td>
</tr>
<tr>
<td><font face="Verdana" size="2">Mots clefs 2</font></td>
<td><input name="champ6" type="text" size=100 maxlength=150>
maximum 200 mots, séparés par des " , " Ne pas mettre d'espaces
avant ou après les virgules.</td>
</tr>
<tr>
<td>La catégorie dans laquelle on veut placer le site</td>
<td><input name="champ7" type="text" size=80 maxlength=100></td>
</tr>
<tr>
<td>Eventuellement sous-catégorie</td>
<td><input name="champ8" type="text" size=80 maxlength=100></td>
</tr>
<tr>
<td><strong>Pour la Personne :</strong></td>
<td> </td>
</tr>
<tr>
<td>prénom</td>
<td><input name="champ9" type="text"></td>
</tr>
<tr>
<td>nom</td>
<td><input name="champ10" type="text"></td>
</tr>
<tr>
<td>M ou Mme</td>
<td><input name="champ11" type="text"></td>
</tr>
<tr>
<td>titre</td>
<td><input name="champ12" type="text"></td>
</tr>
<tr>
<td><strong>Pour le Webmaster :</strong></td>
<td> </td>
</tr>
<tr>
<td>nom et prénom</td>
<td><input name="champ13" type="text"></td>
</tr>
<tr>
<td>adresse email pour les soumissions</td>
<td><input name="champ14" type="text">
attention ! bien lire les recommandations pour ce choix !</td>
</tr>
<tr>
<td><strong>adresse email pour contact</strong></td>
<td><input name="champ15" type="text">
<strong>adresse 'normale' : important pour le suivi !</strong></td>
</tr>
<tr>
<td>mot de passe</td>
<td><input name="champ16" type="text">
choisi pour les soumissions</td>
</tr>
<tr>
<td><strong>Pour la 'Compagnie'.</strong></td>
<td>(Dans cette catégorie, l'on peut ignorer ou refuser certaines lignes
en mettant simplement un ' - ', sauf pour l'adresse e-mail : remettez
la même que pour les soumissions )</td>
</tr>
<tr>
<td>société</td>
<td><input name="champ17" type="text"></td>
</tr>
<tr>
<td>pays</td>
<td><input name="champ18" type="text"></td>
</tr>
<tr>
<td>rue</td>
<td><input name="champ19" type="text"></td>
</tr>
<tr>
<td>code postal</td>
<td><input name="champ20" type="text"></td>
</tr>
<tr>
<td>ville</td>
<td><input name="champ21" type="text"></td>
</tr>
<tr>
<td>email général</td>
<td><input name="champ22" type="text"></td>
</tr>
<tr>
<td>téléphone</td>
<td><input name="champ23" type="text"></td>
</tr>
<tr>
<td>fax</td>
<td><input name="champ24" type="text"></td>
</tr>
<tr>
<td>portable</td>
<td><input name="champ25" type="text"></td>
</tr>
<tr>
<td>numéro vert</td>
<td><input name="champ26" type="text"></td>
</tr>
<tr>
<td>produits</td>
<td><input name="champ27" type="text"></td>
</tr>
<tr>
<td width><font face="Verdana" size="2">E MAIL</font></td>
<td width><input name="zone_email" type="text">
Le même que celui choisi pour les soumissions .</td>
</tr>
<tr>
<td valign="top"><font face="Verdana" size="2">message personnel complèmentaire
: </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="27">
<input name="nbre_zones_texte" type="hidden" value="1"> <input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_champ1" type="hidden" value="Titre du Site">
<input name="titre_champ2" type="hidden" value="URL du site">
<input name="titre_champ3" type="hidden" value="Description courte">
<input name="titre_champ4" type="hidden" value="Description longue">
<input name="titre_champ5" type="hidden" value="Mots clefs 1">
<input name="titre_champ6" type="hidden" value="Mots clefs 2">
<input name="titre_champ7" type="hidden" value="La catégorie dans laquelle on veut placer le site">
<input name="titre_champ8" type="hidden" value="Eventuellement sous-catégorie">
<input name="titre_champ9" type="hidden" value="prénom">
<input name="titre_champ10" type="hidden" value="nom">
<input name="titre_champ11" type="hidden" value="M ou Mme">
<input name="titre_champ12" type="hidden" value="titre">
<input name="titre_champ13" type="hidden" value="nom et prénom">
<input name="titre_champ14" type="hidden" value="adresse email">
<input name="titre_champ15" type="hidden" value="adresse email pour contact">
<input name="titre_champ16" type="hidden" value="mot de passe">
<input name="titre_champ17" type="hidden" value="société">
<input name="titre_champ18" type="hidden" value="pays">
<input name="titre_champ19" type="hidden" value="rue">
<input name="titre_champ20" type="hidden" value="code postal">
<input name="titre_champ21" type="hidden" value="ville">
<input name="titre_champ22" type="hidden" value="email général">
<input name="titre_champ23" type="hidden" value="téléphone">
<input name="titre_champ24" type="hidden" value="fax">
<input name="titre_champ25" type="hidden" value="portable">
<input name="titre_champ26" type="hidden" value="numéro vert :">
<input name="titre_champ26" type="hidden" value="produits :">
<input name="titre_email" type="hidden" value="E MAIL">
<input name="titre_zone" type="hidden" value="message personnel complèmentaire"></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>

si quelqu'un pouvais m'aider, ou encore mieux le corriger complètement ce serait suprt
@mitiés B G