Bonjour,

Voila je rencontre un petit problème avec mon code.
J'ai crée une rubrique "Inscription" et lorsque l'on clique dessus, une fenête apparaît grâce à un évenement click JavaScript.(un système visibility: visible/hidden)

Dans la fenêtre qui apparaît l'on retrouve : pseudo, mot de passe, email, valider email, etc... ainsi qu'avec des conditions if/else : mail déjà utilisée, les mots de passent ne correspondent pas..etc... seulement mon soucis c'est lorsque je souhaite justement afficher les erreurs ma fenêtre ce ferme et à chaque fois il faut que je reclique sur la rubrique "Inscription" pour que celle-ci s'affiche à nouveau.
Dans mon cas il faudrait que la fenêtre reste ouverte le temps que l'inscription se valide

Voici mon code de ma page d'inscription :

if(isset($_POST['forminscription']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$mail = htmlspecialchars($_POST['mail']);
$mail_confirmation = htmlspecialchars($_POST['mail_confirmation']);
$mot_de_passe = sha1($_POST['mot_de_passe']);
$confirmation_mot_de_passe = sha1($_POST['confirmation_mot_de_passe']);

if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail_confirmation']) AND !empty($_POST['mot_de_passe']) AND !empty($_POST['confirmation_mot_de_passe']))
{

    $pseudolength = strlen($pseudo);
    if($pseudolength <= 255)
    {
       if($mail == $mail_confirmation)
       {
           if (filter_var($mail, FILTER_VALIDATE_EMAIL))
           {
                $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                $reqmail->execute(array($mail));
                $mailexist = $reqmail->rowCount();

                if ($mailexist == 0)
                {

                    if ($mot_de_passe == $confirmation_mot_de_passe)
                    {
                        $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, mot_de_passe) VALUES(?, ?, ?)");
                        $insertmbr->execute(array($pseudo, $mail, $mot_de_passe)); ?>

                        <div class="cadre_inscription">
                        <table>
                            <tr>
                                <td><br />
                                    <?php echo '<font color="#0089d3"; font-weight ="bold";>' . "Félicitation ton compte à bien été crée !" . "</font>";?>
                                </td>
                            </tr>
                        </table> 
                    </div>
                    <?php
                    }
                    else 
                    {
                        $erreur = "Vos mots de passes ne correspondent pas !";
                    }

                } 
                else 
                {
                    $erreur = "Adresse mail déjà utilisée !";
                }

            } 
            else
            {
                $erreur = "Votre adresse mail n'est pas valide !";
            }

       } 
       else 
       {
            $erreur = "Vos adresses mail ne correspondent pas !";
       }

    } 
    else 
    {
        $erreur = "Votre pseudo dépasse les 255 caractères !";
    }

} 
else 
{
    $erreur = "Vous n'avez pas rempli tous les champs !";
}

}

?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/style.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<title>Les délices de Gui</title>
</head>

<body>

    <!--- <div id="arrierePlan_identifications"></div> --->

    <!--- Formulaire d'inscription --->
    <div id="inscription">

        <form method="POST">

            <table>
                <tr>
                    <td>
                        <br>
                        <h4>Inscription</h4>
                        <br>
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="pseudo">Pseudo :</label>
                    </td>
                    <td>
                        <input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="mail">Mail :</label>
                    </td>
                    <td>
                        <input type="text" placeholder="Votre mail" id="mail" name="mail" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="mail_confirmation">Confirmation du mail :</label>
                    </td>
                    <td>
                        <input type="text" placeholder="Confirmez votre mail" id="mail_confirmation" name="mail_confirmation" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="mot_de_passe">Mot de passe :</label>
                    </td>
                    <td>
                        <input type="password" placeholder="Mot de passe" id="mot_de_passe" name="mot_de_passe" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="confirmation_mot_de_passe">Confirmation mot de passe :</label>
                    </td>
                    <td>
                        <input type="password" placeholder="Confirmez votre mot de passe" id="confirmation_mot_de_passe" name="confirmation_mot_de_passe" />
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td id="submit">
                        <input type="submit" name="forminscription" value="S'inscrire" />
                    </td>
                </tr>  
            </table>

        </form>

        <?php
        if (isset($erreur))
        {
            echo '<font color="red";>' . $erreur . "</font>";
        }

        if (isset($envoie))
        {
            echo '<font color="green";>' . $envoie . "</font>";
        }
        ?>

    </div>
</body>

</html>

2 réponses


Guizmo
Auteur
Réponse acceptée

Dac merci du conseil ;)

Bonjour,
Je ne suis pas spécialiste JS mais je dirais que ce n'est pas un problème de PHP
Sinon, tu peux virer ses htmlspecialschars qui ne servent qu'à l'affichage
Et également passer à password_hash pour encoder les mdp qui beaucoup plus sécurisé que sha1 (et password_verify pour vérifier 2 mdp)
Enfin rowCount ne s'utilisent pas sur un SELECT, utilise plutôt fetchColumn ou directement fetch dans la condition