Verification complète d'un formulaire en PHP

Fermé
fab1105 Messages postés 114 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 17 juin 2010 - 18 août 2009 à 16:20
 fab1105 - 18 août 2009 à 20:04
Bonjour,


Je suis débutant en programmation et je suis en train de faire un site dans lequel j'ai un formulaire dont je voudrai vérifier la validité.

Voici le code du formulaire :

<h2>Formulaire de contact</h2>
<form method="post" action="traitement.php">
<fieldset>
<legend>Vos informations</legend><br />
<label for="nom">Nom : </label><input type="text" name="nom" id="nom" />
<label for="prenom">Prénom : </label><input type="text" name="prenom" id="prenom" /><br /><br />
<label for="naissance" id="naissance">Date de naissance (JJ/MM/AAAA) :</label> <input type="text" size="2" name="jour" id="jour" /> / <input type="text" size="2" name="mois" id="mois" /> / <input type="text" size="4" name="annee" id="annee" /><br /><br />
<label for="mail">Adresse Email * : </label><input type="text" name="mail" id="mail" size="40" /><br /><br />

<label for="confirm">Confirm Email * : </label><input type="text" name="confirm" id="confirm" size="40" />
</fieldset><br /><br />
<fieldset>
<legend>Vos commentaires</legend>

<br />
<br />
<label for="commentaires">Commentaires :</label><br />
<textarea name="commentaires" id="question" rows="20" cols="70">Rédigez vos commentaires ici .....
</textarea>
</fieldset>
<input type="submit" name="valider" value="Envoyer" />

</form>


Pour la vérification, je souhaiterai vérifier que tous les champs ont été remplis , que la date de naissance soit au bon format, peut-être avec un checkdate() ? Que l'adresse mail soit valable, peut-être avec une expression régulière ? Et que le premier champs mail soit identique à la confirmation mail.

Je souhaiterai également qu'au cas où un champs serait mal rempli, ce champs soit signaler avec par exemple écrit en rouge dans le champs : champs invalide.

Si tous les champs sont remplis et valides, alors on alimente la base de données (pour la créer, je devrai m'en sortir tout seul), et on envoi un mail de confirmation pour dire que la requête à bien été envoyée.

Alors je sais, j'en demande peut-être beaucoup, mais si une âme charitable, pouvait éventuellement me donner une piste, ou même un script complet, je lui en serai vraiment reconnaissant!!!!

Merci d'avance pour vos réponses .
A voir également:

8 réponses

fred_bgt Messages postés 153 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 12 septembre 2009 22
18 août 2009 à 19:59
$ok=0; // binaire, 0:test ok non nul:test pas bon, valeur $ok=id du champ pas bon

if ($nom=="") $ok=1; // on suppose id champ nom=1
if ($prenom=="") $ok=2; // on suppose id champ prenom=2
if ($commentaires=="") $ok=3; // on suppose id champ commentaires=3

if ($mail!=$confirm) $ok=4; // on suppose id champ mail=4
if ( (substr_count('@',$mail)!=1)||(substr_count('.',$mail)==0) ) $ok=4; // le mail doit contenir 1 @ et au moins 1 point

// test sur la date
$nbj=array(31,28,31,30,31,30,31,31,30,31,30,31);
$nbjour=$nbj [$mois];
if ( ($annee-1990)%4)==0)&&($mois==2) ) $nbjour=29; // année bissextile
if ( ($mois<1)||($mois>12) ) $ok=5 // on suppose id champ mois=5
else
{ if ( ($jour<1)||($jour>$njour) ) $ok=6 // on suppose id champ jour=6
}


if ($ok!=0) ... renvoi formulaire avec $ok en paramètre ($ok contient le champ pas bon
je te conseile de passer $ok en variable session, car en GET le client voit le paramètre et un refresh de la page peut nuire à ton code.
$_SESSION['ok']= ...
n'oublie pas session_start() à chaque début de page
ta page formulaire doit donc être une page PHP

Autre pb : qd tu charges à nouveau ta page formualire, tu perds toutes les données, sauf si tu les as sauvegardées dans des variables session ($_SESSION['nom'], ...etc)
tu les testes avant d'afficher le formualaire. Si ces variables existent, tu les affiches, sinon, les champs sont vides.
N'oublies pas de faire unset($_SESSION['nom']) et autres variables après avoir enregistré les variables dans ta base de données

j'espère avoir été clair ! sus pas sûr !

Bon Courage
;-)


pas bon
4
fred_bgt Messages postés 153 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 12 septembre 2009 22
18 août 2009 à 16:23
tu as 2 méthodes (qui sont à mon avis complémentaires) :
- par le javascript (confortable pour le client car pas besoin de tout retaper si un problème survient)
- par le PHP, juste avant la sauvegarde sur serveur

que souhaites-tu en premier lieu ?

PHP, c'est très simple. Javascript aussi mais pas toujours évident à débugguer, sauf avec l'outil de mozilla (console d'erreurs).
0
fab1105 Messages postés 114 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 17 juin 2010 7
18 août 2009 à 16:45
Et bien en fait je souhaiterai faire la vérification uniquement en php, sachant que certains desactivent JS, et que PHP est inévitable pour envoyer un mail de confirmation, ou entrer les données dans la table avec MySQL.

Alors si tu as une méthode en PHP à me conseiller , je suis preneur!

Merci d'avance pour ta réponse.
0
fred_bgt Messages postés 153 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 12 septembre 2009 22
18 août 2009 à 16:51
Quelles sont tes connaissances en PHP ?

Pourrais-tu me donner la liste des données à tester, et quel test tu souhaites faire sur chacune d'entre elles ?

C'est très simple.
0

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

Posez votre question
fab1105 Messages postés 114 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 17 juin 2010 7
18 août 2009 à 17:10
Alors voici la liste avec le test à faire dessus :

$nom : tester si rempli (champs pas vide)
$prenom: tester si rempli
date de naissance avec variables $jour, $mois, $annee : tester si format date est correct
$mail : tester si format mail correct
$confirm : tester si le champs == mail
$commentaires : tester si rempli

ensuite si tout est vérifier on alimente la base, mais ça je dois savoir faire normalement, et on envoi un mail à l'adresse fournie par l'utilisateur pour dire "votre requête à bien été envoyé etc....." , je dois savoir faire aussi mais je m'avance peut-être.


sinon on indique le champs qui n'est pas rempli correctement, genre comme en javascript avec un focus() mais là en PHP et si possible écrire dans le champs mal rempli en rouge "Vous devez remplir ce champs" , par exemple.

Sinon pour mes connaissance en php, je saurai pas trop donner de niveau, j'ai appris tout seul et je me limite à la conception web dynamique, enfin je connais rien à la programmation orientée objet par exemple, et les expressions régulières pas trop non plus.
Voilà.

Merci.
0
fred_bgt Messages postés 153 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 12 septembre 2009 22
18 août 2009 à 17:30
te fais ca avant demain matin, si qq n'a pas répondu avant ... c très simple
0
fab1105 Messages postés 114 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 17 juin 2010 7
18 août 2009 à 17:31
Ok merci beaucoup pour ton aide!
0
Ok merci , je vais me débrouiller avec ça !

Merci encore pour tes réponses et ta disponibilité!
0