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. 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

    1. 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. 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. 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. 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. 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".