Bonsoir,
Je me permets de vous demander un peu d'aide car je bloque dans la vérification de mon formulaire avant envoi des informations à la bdd.
Côté client je fais les vérifications "visuelles" en HTML5 / CSS3 mais côté serveur je souhaite vérifier :
-que les champs ne sont pas vides
-qu'au moins une case checkbox ou radio est cochée
-que l'utilisateur ne pourra pas entrer n'importe quoi au niveau du nom, prénom etc. donc vérification de champs texte et numérique.
Pour les deux premiers ça fonctionne bien mais lorsque je veux rajouter un preg_match que je maitrise très mal, j'ai systématiquement un conflit. Soit le formulaire se valide alors qu'il ne devrait pas, soit il devrait et ne le fait pas.
Voici le code:
voici le code pour la vérif de la saisie par l'utilisateur:
C'est là ou je bloque. J'ai essayé de mettre mon preg_match à plusieurs endroit mais ça ne fonctionne pas, exemple:
Est-ce que je m'y prends mal?
Pouvez- vous me m'aiguiller un peu et me dire également si mon code est lourd par exemple?
Merci par avance aux personnes qui voudront bien m'aider.
Bonne soirée
Biscott'
Je me permets de vous demander un peu d'aide car je bloque dans la vérification de mon formulaire avant envoi des informations à la bdd.
Côté client je fais les vérifications "visuelles" en HTML5 / CSS3 mais côté serveur je souhaite vérifier :
-que les champs ne sont pas vides
-qu'au moins une case checkbox ou radio est cochée
-que l'utilisateur ne pourra pas entrer n'importe quoi au niveau du nom, prénom etc. donc vérification de champs texte et numérique.
Pour les deux premiers ça fonctionne bien mais lorsque je veux rajouter un preg_match que je maitrise très mal, j'ai systématiquement un conflit. Soit le formulaire se valide alors qu'il ne devrait pas, soit il devrait et ne le fait pas.
Voici le code:
// Sécurisation lorsque des requetes dépendent les unes des autres, début de la transaction
mysql_query("SET AUTOCOMMIT=0");
// on vérifie que le formulaire a bien été posté
if ((isset($_POST["formulaire"])) && ($_POST["formulaire"] == "formulaire")) {
// on vérifie que les champs à remplir ne sont pas vide (nom, prénom, matricule, service, date et qu'au moins une case checkbox ou radio est cochée)
if(($_POST['nom'] !="") && ($_POST['prenom'] !="") && ($_POST['matricule'] !="") && ($_POST['service'] !="") && ($_POST['date'] !="" && ($_POST['select'] !="0")) &&
(isset($_POST['tel']) || isset($_POST['messagerie']) || isset($_POST['reseau']) )) {
mysql_query("START TRANSACTION");
// ici j'ai mes requêtes SQL d'insertion dans la base de donnée. Si besoin je peux les ajouter.
// fin de la transaction
$commit = mysql_query('COMMIT');
// Puisque les champs sont remplis lorsque l'on poste le formulaire, un message de validation s'affiche
$affichage .= '<div class="success message" style="top: 0px;">
<h3>Félicitation!</h3>
<p>Votre formulaire a été envoyé avec succès.</p>
</div>';
} else {
// Sinon, donc si un des champs est vide, ou qu'aucune case n'est cochée
$affichage .= '<div class="error message" style="top: 0px;">
<h3>Erreur, votre formulaire n\'est pas valide</h3>
<p>Merci de vérifier les champs à remplir et les cases à cocher.</p>
</div>';
} // fin du if vérif si les champs ne sont pas vides
} // fin du if vérif que le formulaire est posté
voici le code pour la vérif de la saisie par l'utilisateur:
if ((preg_match("/([^A-Za-z])/",$_POST['nom'])) && (preg_match("/([^A-Za-z])/",$_POST['prenom'])) && (preg_match("/([^A-Za-z])/",$_POST['matricule'])) &&
(preg_match("#^[0-9]$#", $_POST['matricule']))) {}
C'est là ou je bloque. J'ai essayé de mettre mon preg_match à plusieurs endroit mais ça ne fonctionne pas, exemple:
if (vérif formulaire) {
if (vérif champs vides et case cochée){
if (preg_match) {
// requetes sql
}
}
}
// autre essai
if (vérif formulaire) {
if (preg_match) {
if (vérif champs vides et case cochée){
// requetes sql
}
}
}
Est-ce que je m'y prends mal?
Pouvez- vous me m'aiguiller un peu et me dire également si mon code est lourd par exemple?
Merci par avance aux personnes qui voudront bien m'aider.
Bonne soirée
Biscott'