par
Dyzx » 21 févr. 2012, 20:37
C'est encore moi... Il y a un (gros) problème pendant l'inscription:
- Si les champs mots de passe sont vides l'inscription se déroule avec succès au lieu d'afficher le message d'erreur "Le mot de passe n'est pas remplis."
- Si le champ email est correcte mais, que le deuxième champs (email2) non, l'inscription se déroule avec succès au lieu d'afficher le message d'erreur "Votre adresse mail n'a pas un format valide." et inversement.
Le nouveau code:
<?php
include_once("include/config.php");
include_once("include/haut.php");
/***********************/
/* Inscription au site.
/***********************/
// Si la variable $_POST['bouton'] est vide, on affiche le formulaire.
if(empty($_POST['bouton']))
{
?>
<div id="inscription">
<form method="post" action="">
<label for="pseudo">Pseudo :</label> <input type="text" name="pseudo" id="pseudo"><br />
<label for="password">Mot de passe :</label> <input type="password" name="password" id="password"><br />
<label for="password2">Retapez le mot de passe :</label> <input type="password" name="password2" id="password2"><br />
<label for="email">Adresse email :</label> <input type="text" name="email" id="email"><br />
<label for="email2">Retapez votre adresse email :</label> <input type="text" name="email2" id="email2"><br />
<input type="submit" name="bouton" value="S'inscrire" />
</form>
</div>
<?php
}
// Sinon la personne a cliqué sur le bouton "S'inscrire" et donc la variable n'est pas vide.
else
{
// On mets les variables d'erreurs à NULL sinon, ça bug.
$erreur_pseudo_vide = NULL;
$nombre_erreur = NULL;
$erreur_pseudo_vide = NULL;
$erreur_pseudo_pris = NULL;
$erreur_mdp_vide = NULL;
$erreur_mdp_différents = NULL;
$erreur_email_format = NULL;
// On récupère les variables du formulaire.
$pseudo = $_POST['pseudo'];
$mdp = md5($_POST['password']);
$mdp2 = md5($_POST['password2']);
$email = $_POST['email'];
$email2 = $_POST['email2'];
// Son rôle est de stocker le nombre d'erreurs.
// Elle est incrémentée à chaque fois qu'un problème est détecté.
$nombre_erreur = 0;
// Vérification du pseudo.
if($pseudo == "")
{
$erreur_pseudo_vide = 'Le pseudo n\'est pas remplis.';
$nombre_erreur++;
}
$bdd = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_user, $PARAM_mdp);
$reponse = $bdd->prepare("SELECT * FROM site_utilisateurs WHERE pseudo = :pseudo");
$reponse->execute(array(':pseudo' => $pseudo));
$donnees = $reponse->fetchAll();
$reponse->closeCursor();
if(count($donnees) > 0)
{
$erreur_pseudo_pris = 'Désolé, ce pseudo est déjà utilisé par un membre.';
$nombre_erreur++;
}
// Vérification du mot de passe.
if($mdp == "" || $mdp2 == "")
{
$erreur_mdp_vide = 'Le mot de passe n\'est pas remplis.';
$nombre_erreur++;
}
if($mdp != $mdp2)
{
$erreur_mdp_différents = 'Les deux mots de passe ne sont pas identiques.';
$nombre_erreur++;
}
// Vérification de l'adresse email.
if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email, $email2) && $email == "" || $email2 == "")
{
$erreur_email_format = 'Votre adresse mail n\'a pas un format valide.';
$nombre_erreur++;
}
// Si il n'y a pas eu d'erreur pendant l'inscription du membre.
if($nombre_erreur == 0)
{
// On enregistre le membre dans la base de données.
$reponse = $bdd->prepare("INSERT INTO site_utilisateurs (pseudo, password, email) VALUES(:pseudo, :password, :email)");
$reponse->execute(array(':pseudo' => $pseudo, ':password' => $mdp, ':email' => $email));
$reponse->closeCursor();
?>
<div class="success">
<h1>Inscription terminée !</h1><br />
Cliquez <a href="connexion.php">ici</a> pour vous connectez.
</div>
<?php
}
// Sinon, il y a eu une erreur ou plus.
else
{
?>
<div class="error">
<p><h1>Inscription interrompue !</h1></p>
<p>Une ou plusieurs erreurs se sont produites pendant l'incription.</p>
<p><?php echo "$nombre_erreur"; ?> erreur(s)</p>
<p><?php echo "$erreur_pseudo_vide";?></p>
<p><?php echo "$erreur_pseudo_pris";?></p>
<p><?php echo "$erreur_mdp_vide";?></p>
<p><?php echo "$erreur_mdp_différents";?></p>
<p><?php echo "$erreur_email_format";?></p>
</div>
<?php
}
}
include_once("include/bas.php");
?>
EDIT: Je voudrais aussi savoir, comment faire pour avoir le formulaire affiché avec les messages d'erreurs ou le message de succès car, le formulaire s'efface.. :/
C'est encore moi... Il y a un (gros) problème pendant l'inscription:
- Si les champs mots de passe sont vides l'inscription se déroule avec succès au lieu d'afficher le message d'erreur "Le mot de passe n'est pas remplis."
- Si le champ email est correcte mais, que le deuxième champs (email2) non, l'inscription se déroule avec succès au lieu d'afficher le message d'erreur "Votre adresse mail n'a pas un format valide." et inversement.
Le nouveau code:
[php]<?php
include_once("include/config.php");
include_once("include/haut.php");
/***********************/
/* Inscription au site.
/***********************/
// Si la variable $_POST['bouton'] est vide, on affiche le formulaire.
if(empty($_POST['bouton']))
{
?>
<div id="inscription">
<form method="post" action="">
<label for="pseudo">Pseudo :</label> <input type="text" name="pseudo" id="pseudo"><br />
<label for="password">Mot de passe :</label> <input type="password" name="password" id="password"><br />
<label for="password2">Retapez le mot de passe :</label> <input type="password" name="password2" id="password2"><br />
<label for="email">Adresse email :</label> <input type="text" name="email" id="email"><br />
<label for="email2">Retapez votre adresse email :</label> <input type="text" name="email2" id="email2"><br />
<input type="submit" name="bouton" value="S'inscrire" />
</form>
</div>
<?php
}
// Sinon la personne a cliqué sur le bouton "S'inscrire" et donc la variable n'est pas vide.
else
{
// On mets les variables d'erreurs à NULL sinon, ça bug.
$erreur_pseudo_vide = NULL;
$nombre_erreur = NULL;
$erreur_pseudo_vide = NULL;
$erreur_pseudo_pris = NULL;
$erreur_mdp_vide = NULL;
$erreur_mdp_différents = NULL;
$erreur_email_format = NULL;
// On récupère les variables du formulaire.
$pseudo = $_POST['pseudo'];
$mdp = md5($_POST['password']);
$mdp2 = md5($_POST['password2']);
$email = $_POST['email'];
$email2 = $_POST['email2'];
// Son rôle est de stocker le nombre d'erreurs.
// Elle est incrémentée à chaque fois qu'un problème est détecté.
$nombre_erreur = 0;
// Vérification du pseudo.
if($pseudo == "")
{
$erreur_pseudo_vide = 'Le pseudo n\'est pas remplis.';
$nombre_erreur++;
}
$bdd = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_user, $PARAM_mdp);
$reponse = $bdd->prepare("SELECT * FROM site_utilisateurs WHERE pseudo = :pseudo");
$reponse->execute(array(':pseudo' => $pseudo));
$donnees = $reponse->fetchAll();
$reponse->closeCursor();
if(count($donnees) > 0)
{
$erreur_pseudo_pris = 'Désolé, ce pseudo est déjà utilisé par un membre.';
$nombre_erreur++;
}
// Vérification du mot de passe.
if($mdp == "" || $mdp2 == "")
{
$erreur_mdp_vide = 'Le mot de passe n\'est pas remplis.';
$nombre_erreur++;
}
if($mdp != $mdp2)
{
$erreur_mdp_différents = 'Les deux mots de passe ne sont pas identiques.';
$nombre_erreur++;
}
// Vérification de l'adresse email.
if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email, $email2) && $email == "" || $email2 == "")
{
$erreur_email_format = 'Votre adresse mail n\'a pas un format valide.';
$nombre_erreur++;
}
// Si il n'y a pas eu d'erreur pendant l'inscription du membre.
if($nombre_erreur == 0)
{
// On enregistre le membre dans la base de données.
$reponse = $bdd->prepare("INSERT INTO site_utilisateurs (pseudo, password, email) VALUES(:pseudo, :password, :email)");
$reponse->execute(array(':pseudo' => $pseudo, ':password' => $mdp, ':email' => $email));
$reponse->closeCursor();
?>
<div class="success">
<h1>Inscription terminée !</h1><br />
Cliquez <a href="connexion.php">ici</a> pour vous connectez.
</div>
<?php
}
// Sinon, il y a eu une erreur ou plus.
else
{
?>
<div class="error">
<p><h1>Inscription interrompue !</h1></p>
<p>Une ou plusieurs erreurs se sont produites pendant l'incription.</p>
<p><?php echo "$nombre_erreur"; ?> erreur(s)</p>
<p><?php echo "$erreur_pseudo_vide";?></p>
<p><?php echo "$erreur_pseudo_pris";?></p>
<p><?php echo "$erreur_mdp_vide";?></p>
<p><?php echo "$erreur_mdp_différents";?></p>
<p><?php echo "$erreur_email_format";?></p>
</div>
<?php
}
}
include_once("include/bas.php");
?>[/php]
EDIT: Je voudrais aussi savoir, comment faire pour avoir le formulaire affiché avec les messages d'erreurs ou le message de succès car, le formulaire s'efface.. :/