Bonjour,

Bonjour,
j'ai un (des) souci(s) avec mon code,
lorsque j'entre un mail dans mon formulaire d'inscription (code n°1) j'ai bien le message comme quoi l'adresse mail est déjà utilisée mais ça s'inscrit quand même dans la table Mysql, idem pour le mot de passe, j'ai bien le message qui me dit que les 2 mots de passe ne sont pas identique mais ça s'inscrit aussi dans la table ... le but est justement de ne pas inscrire la personne si les 2 mots de passe ne correspondent pas ou si l'email est déjà utilisé.
Par contre le message "Inscription prise correctement en compte" ne s'affiche pas quand "j'inscris" un utilisateur sauf dans le code 2.
Dans le code n°2, par contre là aucun message ne s'affiche (ni "Les mots de passe ne sont pas identiques" et ni "Cette adresse email est déjà utilisée") sauf ici "Inscription prise correctement en compte" mais tout s'enregistre quand même dans la table que les email sont identiques ou pas et même si les 2 mots de passe ne correspondent pas. Dans le code 2 j'ai rajouté
Dans le code n°2 il semblerait que c'est "header('location: index.php?success=1');" qui empêche mes 2 messages de s'afficher.
Je ne comprend vraiment pas là ...

header('location: index.php?success=1'); 

CODE N°1

<?php

require('src/connection.php');

if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_confirm']))
    {

    $pseudo             = $_POST['pseudo'];
    $email              = $_POST['email'];  
    $password           = $_POST['password'];   
    $password_confirm   = $_POST['password_confirm'];   

    if($password != $password_confirm){
        header('location: index.php?error=1&pass=1');
    }

    $req = $db->prepare("SELECT count(*) as numberEmail FROM users WHERE email = ?");

    $req->execute(array($email));

    while($email_verification = $req->fetch()){
        if($email_verification['numberEmail'] != 0){
            header('location: index.php?error=1&email=1');
    }   
    }

    $secret = sha1($email).time(); 
    $secret = sha1($secret).time() .time();

    $password = "aq1" .sha1($password."7962629")."25";  

    $req = $db->prepare("INSERT INTO users(pseudo, email, password, secret) VALUES (?, ?, ?, ?)");
    $req->execute(array($pseudo, $email, $password, $secret));

    }

?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>TEST</title>
    <link rel="stylesheet" type="text/css" href="design/default.css">
</head>
<body>
    <header>
        <h1>INSCRIPTION</h1>
    </header>

    <div class="container"> 
    <p id="info"> 
            Bienvenue 
            <a href="connection.php">Connectez-vous</a>
     </p>

    <?php

            if(isset($_GET['error'])){

            if (isset($_GET['pass'])) {
                echo '<p id="error">Les mots de passe ne sont pas identiques.</p>';
            }

            else if (isset($_GET['email'])) {
                echo '<p id="error">Cette adresse email est déja utilisée.</p>';

        }

        }
            else if (isset($_GET['success'])) {
                echo '<p id="success">Inscription prise correctement en compte.</p>';   

        }           

    ?>

     <div id="form"> 
    <form method="post" action="index.php">
        <table>
            <tr>
                <td>Pseudo</td>
                <td><input type="text" name="pseudo" placeholder="Ex: Nicolas" required></td>
            </tr>
            <tr>
                <td>Email</td>
                <td><input type="email" name="email" placeholder="exemple@google.com" required></td>
            </tr>
            <tr>
                <td>Mot de passe</td>
                <td><input type="password" name="password" placeholder="Ex: ********" required></td>
            </tr>
            <tr>
                <td>Retaper le mot de passe</td>
                <td><input type="password" name="password_confirm" placeholder="Ex: ********" required></td>
            </tr>
        </table>
        <div id="button"> 
            <button>Inscription</button>
        </div>
    </form> 
    </div>

    </div>

</body>
</html>

CODE N°2

<?php

require('src/connection.php');

if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_confirm']))
    {

    $pseudo             = $_POST['pseudo'];
    $email              = $_POST['email'];  
    $password           = $_POST['password'];   
    $password_confirm   = $_POST['password_confirm'];   

    if($password != $password_confirm){
        header('location: index.php?error=1&pass=1');
    }

    $req = $db->prepare("SELECT count(*) as numberEmail FROM users WHERE email = ?");

    $req->execute(array($email));

    while($email_verification = $req->fetch()){
        if($email_verification['numberEmail'] != 0){
            header('location: index.php?error=1&email=1');
    }   
    }

    $secret = sha1($email).time(); 
    $secret = sha1($secret).time() .time();

    $password = "aq1" .sha1($password."7962629")."25";  

    $req = $db->prepare("INSERT INTO users(pseudo, email, password, secret) VALUES (?, ?, ?, ?)");
    $req->execute(array($pseudo, $email, $password, $secret));

    header('location: index.php?success=1'); 

    }

?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>TEST</title>
    <link rel="stylesheet" type="text/css" href="design/default.css">
</head>
<body>
    <header>
        <h1>INSCRIPTION</h1>
    </header>

    <div class="container"> 
    <p id="info"> 
            Bienvenue 
            <a href="connection.php">Connectez-vous</a>
     </p>

    <?php

            if(isset($_GET['error'])){

            if (isset($_GET['pass'])) {
                echo '<p id="error">Les mots de passe ne sont pas identiques.</p>';
            }

            else if (isset($_GET['email'])) {
                echo '<p id="error">Cette adresse email est déja utilisée.</p>';

        }

        }
            else if (isset($_GET['success'])) {
                echo '<p id="success">Inscription prise correctement en compte.</p>';   

        }           

    ?>

     <div id="form"> 
    <form method="post" action="index.php">
        <table>
            <tr>
                <td>Pseudo</td>
                <td><input type="text" name="pseudo" placeholder="Ex: Nicolas" required></td>
            </tr>
            <tr>
                <td>Email</td>
                <td><input type="email" name="email" placeholder="exemple@google.com" required></td>
            </tr>
            <tr>
                <td>Mot de passe</td>
                <td><input type="password" name="password" placeholder="Ex: ********" required></td>
            </tr>
            <tr>
                <td>Retaper le mot de passe</td>
                <td><input type="password" name="password_confirm" placeholder="Ex: ********" required></td>
            </tr>
        </table>
        <div id="button"> 
            <button>Inscription</button>
        </div>
    </form> 
    </div>

    </div>

</body>
</html>

1 réponse


Pour ton problème d'inscription (vérification du mail déjà présent et de ton mot de passe équivalent) je t'invite à aller voir cet article-là :
Formulaire d'inscription

Peut-être que cela répondra à tes attentes