Multi pseudo

Bonjour, j'aimerai savoir comment créer un script php qui vérifie si un pseudo n'a pas été déjà enregistré dans la bdd.
Merci !!!

7 réponses

  1. Ce que je fais habituellement, c'est que le fichier PHP qui affiche le formulaire se rappelle lui-même, pour faire les contrôles avant d'afficher quoi que ce soit, et s'il est validé, je change de page :

    form.php :
    <?php
    if ( tous les tests pour valider ) {
    header("Location:page_apres_validation.php");
    }
    ?>
    <html>
    ... tous le code HTML y compris le formulaire
    </html>


    Il y a aussi des techniques pour vérifier la validation avant de terminer le formulaire, mais ça demande l'exécution de javascript ou autre code côté navigateur, plus "hasardeux".
    1. Pouvez-vous me montrer un script complet.
      Merci !!!
      1. Et bien juste avant de faire le INSERT, tu fais :

        if (mysqli_query($conn,"SELECT * FROM `users` WHERE username='$username' ;")===1)
        {
        echo "Le nom $username est déjà utilisé, choisissez-en un autre";
        // Réafficher le formulaire...
        } else {
        // On peut insérer car le nom n'est pas déjà utilisé
        }
      2. @B2D2Comment réafficher le formulaire.
    2. Je vois deux possibilités simples :
      - ne pas autoriser les doublons pour le champ "pseudo" ; et dans ce cas, l'INSERT renverra une erreur qui pourra indiquer que le pseudo existe déjà ;
      - avant de faire l'INSERT, tu fais un
      SELECT id FROM utilisateurs WHERE pseudo=" $pseudo " ;
      si cette requète renvoi un résultat, tu réaffiche le formulaire en précisant que le pseudo est déjà utilisé.
      1. J'ai déjà une connexion mysqli (config.php), j'aimerrai savoir comment utiliser SELECT WHERE.
        1. Modérateur
          De la même façon que pour ton insert.
      2. Si vous voulez, le script complet est :
        <!DOCTYPE html>
        <html>
        <head>
        <title>Inscription</title>
        <link rel="stylesheet" href="style.css" />
        </head>
        <body>
        <?php
        require('config.php');
        if (isset($_REQUEST['username'], $_REQUEST['email'], $_REQUEST['password'])){
        // récupérer le nom d'utilisateur et supprimer les antislashes ajoutés par le formulaire
        $username = stripslashes($_REQUEST['username']);
        $username = mysqli_real_escape_string($conn, $username);
        // récupérer l'email et supprimer les antislashes ajoutés par le formulaire
        $email = stripslashes($_REQUEST['email']);
        $email = mysqli_real_escape_string($conn, $email);
        // récupérer le mot de passe et supprimer les antislashes ajoutés par le formulaire
        $password = stripslashes($_REQUEST['password']);
        $password = mysqli_real_escape_string($conn, $password);
        //requéte SQL + mot de passe crypté
        $query = "INSERT into `users` (username, email, password)
        VALUES ('$username', '$email', '".hash('sha256', $password)."')";
        // Exécute la requête sur la base de données
        $res = mysqli_query($conn, $query);
        if($res){
        echo "<div class='sucess'>
        <h3>Vous êtes inscrit avec succès.</h3>
        <p>Cliquez ici pour vous <a href='login.php'>connecter</a></p>
        </div>";
        }
        }else{
        ?>
        <form class="box" action="" method="post">
        <h1 class="box-title box-logo"><a href="https://oakthunder.ddns.net/"></a></h1>
        <h1 class="box-title">S'inscrire</h1>
        <input type="text" class="box-input" name="username" placeholder="Nom d'utilisateur" required />
        <input type="text" class="box-input" name="email" placeholder="Email" required />
        <input type="password" class="box-input" name="password" placeholder="Mot de passe" required />
        <input type="submit" name="submit" value="S'inscrire" class="box-button" />
        <p class="box-register">Déjà inscrit ? <a href="login.php">Connectez-vous ici</a></p>
        </form>
        <?php } ?>
        </body>
        </html>

        et config.php :
        <?php
        // Informations d'identification
        define('DB_SERVER', 'localhost');
        define('DB_USERNAME', 'root');
        define('DB_PASSWORD', 'mon mdp');
        define('DB_NAME', 'registration');

        // Connexion à la base de données MySQL
        $conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

        // Vérifier la connexion
        if($conn === false){
        die("ERREUR : Impossible de se connecter. " . mysqli_connect_error());
        }
        ?>
        1. Modérateur
          Bonjour

          Ta question est bien trop vague... Nous ne savons pas ce que tu as commencé à faire .. sur quel point précis tu bloques...

          A minima, il faut se connecter à la bdd en pdo ou mysqli
          Puis faire une requête dy type SELECT WHERE