Contrôles de saisies

didine7231 - 24 juin 2013 à 10:02
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 25 juin 2013 à 12:06
Bonjour,

j'espère que je ne me suis pas trompé d'endroit où poster ce message. Je suis actuellement entrain de créer un site internet : http://cfpsaintexupery.com. Dans la rubrique contactez-nous, mes contrôles de saisies ne marche pas comme je voudrais. J'ai inséré du javascript, mais je n'en ai jamais manipulé auparavant. En fait l'erreur c'est que même quand les cases sont rouges c'est à dire qu'il n'y a rien dedans, le formulaire s'envoie quand même. Je reçois également des mails vides ( sans nom, ni prénom, ni mail et ni message ) quand je vais sur la rubrique contactez nous. Je vous mets le code, si quelqu'un pourrais m'aider ça serait gentil.





Nom *



Prenom *






Votre E-mail



Message *













function surligne(champ, erreur)
{
if(erreur)
champ.style.backgroundColor = "#fba";
else
champ.style.backgroundColor = "";
}

function verifNom(champ)
{
if(champ.value.length < 2 || champ.value.length > 25)
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
function verifPrenom(champ)
{
if(champ.value.length < 2 || champ.value.length > 25)
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
function verifMail(champ)
{
var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
if(!regex.test(champ.value))
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
function verifForm(f)
{
var nomOk = verifNom(f.nom);
var prenomOk = verifPrenom(f.prenom);
var messageOk = verifMail(f.message);


if(nomOk && prenomOk && messageOk)
return true;
else
{
alert("Veuillez remplir correctement tous les champs");
return false;
}
}

7 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juin 2013 à 14:43
Bonjour,

Utilise la console d'erreurs de ton navigateur
La paire d'erreurs se trouve dans verifForm :
var nomOk = verifNom(f.name);
var prenomOk = verifPrenom(f.prenom);
var messageOk = verifMail(f.mail);

Et ne définis pas d'id si tu ne t'en sers pas...
Ca allonge le code pour rien et tu pourrais accidentellement
les utiliser comme si c'étaient des noms alors que ce n'en sont pas
(ça ira dans un navigateur mais pas dans les autres)

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Merci de ton aide, effectivement c'était cette paire d'erreur. Mais il me reste toujours une erreur, puisque quand je vais sur la page les mails s'envoient vides. Sans que je n'ai appuyé sur quoi que ce soit..
0
nicotontige
25 juin 2013 à 11:41
Bonjour,

Il te suffit de remplacer ton :

par un type button


tu rajouteras un onclick dessus qui vérifie si les champs sont vides, et s'il ne le sont pas tu fait un form.submit() qui enverra ton formulaire.
0



Nom *



Prenom *






Votre E-mail



Message *













function surligne(champ, erreur)
{
if(erreur)
champ.style.backgroundColor = "#fba";
else
champ.style.backgroundColor = "";
}

function verifNom(champ)
{
if(champ.value.length < 2 || champ.value.length > 25)
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
function verifPrenom(champ)
{
if(champ.value.length < 2 || champ.value.length > 25)
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
function verifMail(champ)
{
var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
if(!regex.test(champ.value))
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
function verifForm(f)
{
var nomOk = verifNom(f.name);
var prenomOk = verifPrenom(f.prenom);
var messageOk = verifMail(f.mail);


if(nomOk && prenomOk && messageOk)
return true;
else
{
alert("Veuillez remplir correctement tous les champs");
return false;
}
}





J'ai rajouté la fin du code, je me demande si c'est vraiment quand j'appuie sur le bouton que ça envoie. Je pense plutôt que la ça le fait a chaque fois que je vais sur la page mais je sais pas comment remedier ça.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 juin 2013 à 11:55
@nicotontige : Ca ne changera rien...

La validation doit être faite côté PHP également !

Et avant de traiter une demande, il faut voir s'il y en a effectivement une :
mets ton code dans un if (isset($_POST['Envoyer'])) {...}
Explication : le contenu du bouton est également envoyé avec le reste du form,
c'est pour ça qu'on le retrouve dans $_POST quand on clique dessus.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Je ne comprends pas tout, je met le if après le form ? Et si il y a isset de envoyer, ca n'envoie pas ?
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 juin 2013 à 12:06
(essaie de comprendre un minimum le langage avant de coder, bosser "à l'aveugle" pourrait être dangereux point de vue sécurité)

SI isset(...) ALORS traiter; //SINON ne_rien_faire;
[vu que isset() est synonyme de "formulaire envoyé"]


Donc :
<?php
if (isset($_POST['Envoyer']))
{
  //traitement ici
  //...
  //et si ça marche :
  echo "Le message a bien été envoyé !";
}
else
{
  ?>code HMTL du formulaire
<?php
}


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Rejoignez-nous