IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Vérification si user existe déjà [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut Vérification si user existe déjà
    Bonjour a tous !

    Volilà je voudrais vérifier à l'enregistrement si le login rentré est déjà enregistré dans ma base avant de permettre l'enregistrement.

    Voici le code utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    // ------ AJOUT D'UN UTILISATEUR --------
    if(isset($_POST['login'])){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
        if(($_POST['login'] == "") || ($_POST['pass'] == "")){ // si login ou mot de passe non spécifiés >> message d'erreur
            header("Location:admin.php?erreur=empty");
        }
        else if($_POST['pass'] == $_POST['pass2']){ // on vérifie si le mot de passe et le mot de passe confirmé ont la même valeur
            // on passe toutes les variables $POST en variables
            $login = $_POST['login'];
            $pass = md5($_POST['pass']); // ici, on crypte le mot de passe à l'aide de MD5 (c'est tout simple non ? :)
            $nom = $_POST['nom'];
            $prenom = $_POST['prenom'];
            $privilege = $_POST['privilege'];
            // on fait l'INSERT dans la base de données
     
            mysql_select_db($database_dbprotect, $dbprotect);
            ///MAIS LA ON VERIFIFE D'ABORD
            $req='select count(*) as nb from utilisateurs where login="'.$login.'"';
            $dq=mysql_query($req);
            $res=mysql_fetch_array($dq);
            if(isset($res['nb'])&&!empty($res['nb'])){
            //empty detecte les valeurs a 0...
            //et la il y a deja un utilisateur connecte
            header("Location:admin.php?erreur=utilisateur_deja_existant" );
            }else{        
            $add_user = sprintf("INSERT INTO utilisateurs (login, pass, nom, prenom, privilege) VALUES ('$login', '$pass', '$nom', '$prenom', '$privilege')");
              mysql_select_db($database_dbprotect, $dbprotect);
              $result = mysql_query($add_user, $dbprotect) or die(mysql_error());
            header("Location:admin.php?add=ok"); // redirection si création réussie
        }
        else{
            header("Location:admin.php?erreur=pass"); // redirection si le pass1 est différent du pass2
        }
    }
    Mais rien ne se passe lorsque j'enregistre un même login, l'enregistrement se fait bien dans la base comme-ci de rien n'étais :-(

    Pouvez vous m'aider a trouver mon erreurs?

    D'avance merci

  2. #2
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 277
    Points
    277
    Par défaut
    bonjour,
    je te conseille d'utiliser elseif et d'afficher tes requêtes pour voir!
    et je crois bien que ton test devrait être

  3. #3
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    aaaaa ça m'énerve je suis dessus depuis ce matin et je m'en sors pas

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php 
    // ------ AJOUT D'UN UTILISATEUR --------
        if(isset($_POST['login'])){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
        if(($_POST['login'] == "") || ($_POST['pass'] == "")){ // si login ou mot de passe non spécifiés >> message d'erreur
            header("Location:admin.php?erreur=empty");
        }
        else
        {
            // on passe toutes les variables $POST en variables
            $login = $_POST['login'];
            $pass = md5($_POST['pass']); // ici, on crypte le mot de passe à l'aide de MD5
            $pass2 = md5($_POST['pass2']); // ici, on crypte le mot de passe à l'aide de MD5
            $nom = $_POST['nom'];
            $prenom = $_POST['prenom'];
            $privilege = $_POST['privilege'];
     
            if ($login && $pass && ($pass==$pass2)) {
                // Le nom existe déjà ?
                $sql="SELECT * FROM utilisateurs WHERE login='.$login.'";
                $result=mysql_query($sql);
                if ($result && mysql_num_rows($result) > 0) {
                    header("Location:admin.php?erreur=utilisateur_deja_existant");
                    return false;
                } else {
                    $sql = "INSERT INTO utilisateurs (login, pass, nom, prenom, privilege) VALUES ('$login', '$pass', '$nom', '$prenom', '$privilege')";
                    $result = mysql_query($sql);
                    if (!$result) {
                        header("Location:admin.php?erreur=".mysql_error() ."");
                        return false;
                    } else {
                        header("Location:Administration.php?add=ok");
                        return true;
                    }
                }
            } else {
                $feedback .= "ERREUR - Vous devez entrer votre nick et deux fois votre password.\n";
                return false;
            }
        }
    }
    .......
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "pass")) { // Affiche l'erreur  ?>
        <span class="erreur">Veuillez entrer deux fois votre mot de passe SVP</span>
        <?php } ?>
        <?php if(isset($_GET['add']) && ($_GET['add'] == "ok")) { // Affiche l'erreur ?>
        <span class="result_stats">L'utilisateur a &eacute;t&eacute; cr&eacute;&eacute; avec succ&egrave;s !</span>
        <?php } ?>
        <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "empty")) { // Affiche l'erreur  ?>
        <span class="erreur">Veuillez renseigner le login, le mot de passe et le privilège SVP</span>
        <?php } ?>
        <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "utilisateur_deja_existant")) { // Affiche l'erreur  ?>
        <span class="erreur">Cet Utilisateur existe déjà</span>
        <?php } ?>
    erreur retournée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error in c:\program files\easyphp1-8\www\ci  secu\admin.php on line 42
    SVP de l'aide merci

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    manque sûrement un ; quelque part, jette un coup d'oeil du côté de la ligne 42 et précédentes

  5. #5
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    nan je vois rien

    La ligne 42 est : "header("Location:Administration.php?add=ok");"

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Le mélange de PHP et de HTML rend le code illisible et trop difficile à débugger.

  7. #7
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    l'erreur est dans le code php je pense car la deuxième portion de code marche nikel

    j'ai un peu modifié le code en changeant ça :

    $sql=sprintf("SELECT * FROM utilisateurs WHERE login='.$login.'");
    et
    $sql = sprintf("INSERT INTO utilisateurs (login, pass, nom, prenom, privilege) VALUES ('$login', '$pass', '$nom', '$prenom', '$privilege')");

    Maintenant l'utilisateur est créé alors que le login existe déjà

  8. #8
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par xender
    nan je vois rien

    La ligne 42 est : "header("Location:Administration.php?add=ok");"
    j'ai dit ligne 42 et précédentes

  9. #9
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    oui je sais j'ai regardé avant mais rien ne manque pour moi.
    Si tu en vois j'aimerais bien que tu me le dise.

  10. #10
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    comme l'a dit JWhite, ton code n'est pas des plus faciles à lire...

    en plus je crois bien que dans les règles, il y a un truc marqué du style "on ne post pas pour une parse error..."

    Si t'arrive pas à te sortir de ces erreur, y'a vraiment un pb...

  11. #11
    Membre actif Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Points : 240
    Points
    240
    Par défaut
    Salut.

    Déja j'ai appris un truc l'utilisation du "&&" moi j'utilise "AND" à la place.
    Par contre dans tes "if", aére ton code met chaque condition entre parenthéses quand ily'a 2 conditions ou +

  12. #12
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    ligne 42 je ne sais pas si c'est une erreur dû à la refrappe de ton code mais tu as ceci : "header("Location:Administration.php?add=ok");"

    Mets plutot ceci header("Location: Administration.php?add=ok"); sans les guillemets

    Pense aussi à l'espace dans tes header. ex: header('location: tapage.php');

  13. #13
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    yooouuhhhoou ça y est ça marche

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    // ------ AJOUT D'UN UTILISATEUR --------
          if(isset($_POST['login'])){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
          if(($_POST['login'] == "") || ($_POST['pass'] == "") || ($_POST['pass2'] == "") || ($_POST['email'] == "") || ($_POST['privilege'] == "")){ // Vérifie les champs obligatoires
                header("Location: Administration.php?erreur=empty");
          }
          else
          {
                // on passe toutes les variables $POST en variables
                $login = $_POST['login'];
                $pass = md5($_POST['pass']); // ici, on crypte le mot de passe à l'aide de MD5
                $pass2 = md5($_POST['pass2']); // ici, on crypte le mot de passe à l'aide de MD5
                $nom = $_POST['nom'];
                $prenom = $_POST['prenom'];
                $email = $_POST['email'];
                //vérifiaction de l'email
                $point = strpos($email,".");
                $aroba = strpos($email,"@");
                if (!$point || !$aroba) {
                      header("Location: Administration.php?erreur=email_invalide"); //Affiche que l'email est incorrecte
                      return false;
                      }
                $privilege = $_POST['privilege'];
     
                if ($pass==$pass2) { // On vérifie si le mot pass 1 et le mot de pass 2 sont les mêmes
                      mysql_select_db("dbprotect", $dbprotect);
                      $result=mysql_query("SELECT * FROM utilisateurs WHERE login='$login'", $dbprotect) or die(mysql_error()); //ici je vérifie si le login existe déjà
                      $num_rows = mysql_num_rows($result); // retourne le nombre de login identique trouvé
                      if ($num_rows > 0) {
                            header("Location: Administration.php?erreur=utilisateur_deja_existant"); //Affiche l'erreur si login existe déjà
                            return false;
                      } else {
                            mysql_select_db("dbprotect", $dbprotect);
                            $result = mysql_query("INSERT INTO utilisateurs (login, pass, nom, prenom, email, privilege) VALUES ('$login', '$pass', '$nom', '$prenom', '$email', '$privilege')", $dbprotect) or die(mysql_error());
                            if (!$result) {
                                  echo 'erreur SQL'; //Affiche erreur SQL
                                  return false;
                            } else {
                                  header("Location: Administration.php?add=ok"); //Affiche que l'utilisateur a bien été créé
                                  return true;
                            }
                      }
                } else {
                      header("Location: Administration.php?erreur=motdepass_differents"); //Affiche que l'utilisateur n'a pas bien rentré les deux mots de pass
                      return false;
                }
          }
    }
    ?>

    merci pour votre aide à tous !

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérification de l'existence d'une fonction
    Par seub17 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/10/2006, 08h57
  2. [MySQL] Vérification de l'existance d'un Pseudo
    Par Nadd dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/03/2006, 21h25
  3. Vérification de l'existance d'un fichier via HTTP
    Par mouste79 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 02/02/2006, 14h26
  4. Vérification de l'existence d'un lien / url (link checker)
    Par strek100 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/10/2005, 07h34
  5. Vérification de l'existence d'un fichier
    Par alfu dans le forum ASP
    Réponses: 2
    Dernier message: 06/10/2004, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo