Probème traitement formulaire en php
bizerte77
-
halbo5 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
halbo5 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé un formulaire d'inscription, il y a quelques vérifications à faire avant d'accepter l'inscription... Le problème c'est que je débute, je n'ai pas encore les bons réflexes pour que mon code fonctionne correctement...
J'aimerai vérifier le code postal: je veux 4 chiffres minimum et 5 chiffres maximum sinon un message s'affiche en disant que le code postal est invalide (si c'est bon, on affiche rien), quand je teste en mettant un code postal invalide, le message s'affiche mais la personne peut quand même s'inscrire ce qui n'est pas bon!
J'aimerai également vérifier si le pseudo est déjà pris (existe dans mas BDD), quand je teste avec un pseudo existant dans ma BDD, il y a bien le message qui s'affiche qui dit que le pseudo existe déjà mais la personne peut quand même s'inscrire ce qui n'est pas bon non plus.
Et dernière petite chose, j'aimerai que le mot de passe contient au minimum 5 caractères sinon un message s'affiche qui dit 5 caractères minimum, quand je teste le message s'affiche mais on peut quand même s'inscrire.
Je pense que j'ai des problèmes avec mes variables mais je ne sais pas comment mettre tout ça en place...
Si quelqu'un peut m'aider...
Ligne 50: vérifier caractère minimum du mot de passe
Ligne 56: vérifier le code postal
Ligne 64: vérifier le pseudo
Voici mon code php en entier :
Merci pour votre aide très précieuse
Bonne journée
J'ai créé un formulaire d'inscription, il y a quelques vérifications à faire avant d'accepter l'inscription... Le problème c'est que je débute, je n'ai pas encore les bons réflexes pour que mon code fonctionne correctement...
J'aimerai vérifier le code postal: je veux 4 chiffres minimum et 5 chiffres maximum sinon un message s'affiche en disant que le code postal est invalide (si c'est bon, on affiche rien), quand je teste en mettant un code postal invalide, le message s'affiche mais la personne peut quand même s'inscrire ce qui n'est pas bon!
J'aimerai également vérifier si le pseudo est déjà pris (existe dans mas BDD), quand je teste avec un pseudo existant dans ma BDD, il y a bien le message qui s'affiche qui dit que le pseudo existe déjà mais la personne peut quand même s'inscrire ce qui n'est pas bon non plus.
Et dernière petite chose, j'aimerai que le mot de passe contient au minimum 5 caractères sinon un message s'affiche qui dit 5 caractères minimum, quand je teste le message s'affiche mais on peut quand même s'inscrire.
Je pense que j'ai des problèmes avec mes variables mais je ne sais pas comment mettre tout ça en place...
Si quelqu'un peut m'aider...
Ligne 50: vérifier caractère minimum du mot de passe
Ligne 56: vérifier le code postal
Ligne 64: vérifier le pseudo
Voici mon code php en entier :
<?php function connectgratuit(){ $base= mysql_connect ('localhost','root',''); mysql_select_db ('gratuit',$base); } if(isset($_POST['valider'])){ $champs_vide=array(); if (empty($_POST['prenom'])){ $champs_vide[]='"prenom"'; } if (empty ($_POST['pseudo'])){ $champs_vide[]='"pseudo"'; } if (empty ($_POST['postal'])){ $champs_vide[]='"code postal"'; } if (empty($_POST['email'])) { $champs_vide[] = '"Email"'; } if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $champs_mail[] = array(); $champs_mail[] = "invalide"; echo '<div style="position:absolute; margin-top: 235px; margin-left:490px; color:red">Email invalide</div>'; } if (empty ($_POST['pass'])){ $champs_vide[]='"mot de passe"'; } if (empty ($_POST['confirm_pass'])){ $champs_vide[]='"confirmer mot de passe"'; } if ( $_POST['confirm_pass'] != $_POST['pass'] ) { echo '<div style="color:red; position:absolute; margin-top: 287px; margin-left:490px ">Les 2 mots de passe sont différents! </div>'; $champs_double = array(); $champs_double[] = "doublons"; } // VERIFIER CARACTERE MINIMUM MOT DE PASSE if ( strlen( $_POST['pass'] ) < 5 ) { echo '<div style="position:absolute; margin-top:305px; margin-left:490px; color:red">5 caractères minimum!</div>' ; } //FIN DE VERIFICATION //VERIFIER LE CODE POSTAL if (!eregi("^([0-9]{4,5})$", $_POST['postal'] )) { echo '<div style="position:absolute; margin-top: 200px; margin-left:490px; color:red">Code postal invalide</div>'; } //FIN DE VERIFICATION connectgratuit(); //VERIFIER LE PSEUDO $pseudo = $_POST['pseudo']; $verif_pseudo = mysql_query("SELECT pseudo FROM inscription WHERE pseudo='$pseudo'"); if (mysql_num_rows($verif_pseudo) != 0) { echo '<div style="position:absolute; margin-top:165px; margin-left:490px; color:red">Le pseudo existe déjà</div>'; } //FIN DE VERIFICATION if (empty ($champs_vide) && empty($champs_double) && empty($champs_mail)){ $prenom=$_POST['prenom']; $pseudo=$_POST['pseudo']; $postal=$_POST['postal']; $email=$_POST['email']; $pass=$_POST['pass']; $confirm_pass=$_POST['confirm_pass']; echo ' <div style="padding-left:240px; margin-top: 10px; margin-bottom:-10px">Votre inscription a bien été pris en compte.</div>'; $sql='INSERT INTO inscription VALUES("","'.$prenom.'","'.$pseudo.'", "'.$postal.'", "'.$email.'","'.$pass.'", "'.$confirm_pass.'",NOW())'; mysql_query($sql) or die('Erreur SQL!'.$sql. '<br>' .mysql_error()); mysql_close(); } //champs_vide else { if (!empty($champs_vide)){ echo '<div style="padding-left:150px; color:red; margin-bottom: -15px"><h4 style="padding-left:90px; padding-bottom:10px;">Merci de remplir le champs suivant:</h4> <span style="text-align:center">' .implode($champs_vide). '</span></div>'; } } } //valider ?>
Merci pour votre aide très précieuse
Bonne journée
A voir également:
- Probème traitement formulaire en php
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Formulaire de reclamation instagram - Guide
- Traitement de texte gratuit - Guide
1 réponse
Bonjour,
Le problème vient de tes tests, pas de tes variables.
Si tu testes :
if (condition==vrai)
{ alors je fais ceci}
La condition if est exécutée si la condition est vraie. Mais si elle est fausse, elle est simplement ignorée et la suite du code est traitée.
Par contre si tu testes :
if (condition==vrai)
{ alors je fais ceci}
else
{je fais cela}
Dans ce cas, un code est exécutée si la condition est fausse.
Dans ton cas la difficulté vient du fait que tu as beaucoup de tests, donc une structure if ... else ne suffit pas.
Plusieurs pistes possibles :
If (mot de passe < 5 caractères)
{
trop court
}
else { je continue le script
if (code postal pas correct)
{
code postal pas correct, j'envoie un message
}
else {je continue le script
ainsi de suite et je fais tous les tests
}
}
Autre solution, que je préfère personnellement (mais c'est affaire de gout :-) ) :
Tu crées au début une variable $erreur et tu lui donnes la valeur 0.
Ensuite dans chaque test, tu donne la valeur 1 à cette variable s'il y a une erreur.
Exemple :
If (mot de passe < 5 caractères)
{
message qui dit que c'est trop court
$erreur=1;
}
A la fin de tes tests, il te restera à faire un dernier test :
if ($erreur!=1)
{
lancer la procédure d'inscription (mettre ici ton code qui gère l'inscription)
}
else
{
message pour indiquer qu'il y a des erreurs
}
En espérant que cela te sera utile.
Si cela t'intéresse, j'ai mis en place un cours sur le PHP :
http://www.cdprof.com/moodle/course/view.php?id=8
A+
Alain
Le problème vient de tes tests, pas de tes variables.
Si tu testes :
if (condition==vrai)
{ alors je fais ceci}
La condition if est exécutée si la condition est vraie. Mais si elle est fausse, elle est simplement ignorée et la suite du code est traitée.
Par contre si tu testes :
if (condition==vrai)
{ alors je fais ceci}
else
{je fais cela}
Dans ce cas, un code est exécutée si la condition est fausse.
Dans ton cas la difficulté vient du fait que tu as beaucoup de tests, donc une structure if ... else ne suffit pas.
Plusieurs pistes possibles :
If (mot de passe < 5 caractères)
{
trop court
}
else { je continue le script
if (code postal pas correct)
{
code postal pas correct, j'envoie un message
}
else {je continue le script
ainsi de suite et je fais tous les tests
}
}
Autre solution, que je préfère personnellement (mais c'est affaire de gout :-) ) :
Tu crées au début une variable $erreur et tu lui donnes la valeur 0.
Ensuite dans chaque test, tu donne la valeur 1 à cette variable s'il y a une erreur.
Exemple :
If (mot de passe < 5 caractères)
{
message qui dit que c'est trop court
$erreur=1;
}
A la fin de tes tests, il te restera à faire un dernier test :
if ($erreur!=1)
{
lancer la procédure d'inscription (mettre ici ton code qui gère l'inscription)
}
else
{
message pour indiquer qu'il y a des erreurs
}
En espérant que cela te sera utile.
Si cela t'intéresse, j'ai mis en place un cours sur le PHP :
http://www.cdprof.com/moodle/course/view.php?id=8
A+
Alain