Multi pseudo

loulou -  
 B2D2 -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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

    0
  2. loulou
     
    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());
    }
    ?>
    0
  3. loulou
     
    J'ai déjà une connexion mysqli (config.php), j'aimerrai savoir comment utiliser SELECT WHERE.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      De la même façon que pour ton insert.
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. B2D2
     
    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é.
    0
  6. loulou
     
    Pouvez-vous me montrer un script complet.
    Merci !!!
    0
    1. B2D2
       
      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é
      }
      0
      1. loulou > B2D2
         
        Comment réafficher le formulaire.
        0
  7. B2D2
     
    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".
    0