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 :

login/mdp donnant une erreur 1 coup sur 2


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut login/mdp donnant une erreur 1 coup sur 2
    BOnjour, voilà j'ai 1 souci avec ma création de login/mdp.
    En faite, il arrive que quand je saisie des logins et mdp non contenu dans ma bdd, il m'affiche quand meme comme quoi il existe deja, mais les crée quand meme. Donc je comprend pas car l'erreur apparait 1/3 on va dire.

    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
     
    <?php 
    //connection à la base 
    include ("mysqlconnect.php"); 
    //récupération des saisies dans le formulaire 
    $utilisateur = $_POST['utilisateur']; 
    $password = $_POST['password']; 
    $email = $_POST['adresse_email']; 
    $OK = true; 
    function test($sql) 
       { 
       global $OK; 
       $req = mysql_query($sql); 
       $data = mysql_fetch_array($req);  
       if($data['cnt'] > 0)  
           {
           $OK= false;
           } 
       } 
    if((empty($utilisateur)) || (empty($password)))  
       { 
       $OK= false; 
       echo '<script language=javascript> alert ("Vous avez oublié de remplir un champs");</script>'; 
       echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>'; 
       exit; 
       }else{ 
                $sql = "SELECT count(*) as cnt 
                FROM logins 
                WHERE loginL = '".$utilisateur."'"; 
                test($sql); 
                $sql2 = "SELECT count(*) as cnt 
                FROM logins 
                WHERE emailL = '".$email."'"; 
                test($sql);            
              }  
    if ($OK)
           {
         echo '<link href="css/style2.css" rel="stylesheet" type="text/css" />'; 
         $sql = "INSERT INTO logins (loginL, passwordL, emailL) 
         VALUES ('".$utilisateur."' , '".$password."', '".$email."')"; 
         $result = mysql_query($sql) 
    or die ("Erreur d'Insertion dans la base : ". $sql .'<br />'. mysql_error()); echo '<p>Votre login &agrave; &eacute;t&eacute; ajout&eacute; &agrave; la base de donn&eacute;es, <a href="index.php">cliquez ici</a> pour vous connecter.</p>'; 
       }else{ 
              include"creationcompte.php";
              //tu laisses le formulaire gérer les messages d'erreurs, moi j'utilise un class=error dans le formulaire pour signaler les champs fautifs. 
               } 
    include ("mysqldeconnection.php"); 
    ?>
    personne n'a rencontré de problème similaire :

  2. #2
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    pourquoi ne ferais-tu pas ainsi :

    <?php
    &#160;&#160;&#160;&#160;$sql&#160;
    =&#160;"SELECT&#160;loginL&#160;,&#160;emailL
    &#160;&#160;&#160;&#160;FROM&#160;logins
    &#160;&#160;&#160;&#160;WHERE&#160;loginL&#160;=&#160;'"
    .$utilisateur."'
    &#160;&#160;&#160;&#160;AND&#160;emailL&#160;=&#160;'"
    .$email."'";
    &#160;&#160;&#160;&#160;&#160;
    mysql_query($sql);
    &#160;&#160;&#160;&#160;&#160;
    $_nb&#160;=&#160;mysql_affected_rows()&#160;;
    ?>

    Phpsyntaxcolor powered by decabodi.com
    Puis :

    <?php
    if&#160;(&#160;$_nb&#160;<&#160;1&#160;)
    ?>

    Phpsyntaxcolor powered by decabodi.com
    Au lieu de

    Non ?
    Consultant idéaliste.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    J'vai essayer

    J'ai adopté ta méthode je la préfére à la mienne oui.

    Par contre j'ai toujours le meme soucis.
    J'ai fait 1 jeu de test.

    Je met login"moise" pass"moise" email "moise@aol.com"
    ca fonctionne
    Je met login"moise2" pass"moise2" email "moise2@aol.com"
    il me renvoi vers la meme page donc comme quoi il existe déja, et malgrès ca il le créer quand meme.
    Je met login"moise3" pass"moise3" email "moise3@aol.com"
    ca fonctionne

  4. #4
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Sacré moise. Montres un peu comment tu fais maintenant ?
    Consultant idéaliste.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    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
    <?php 
    //connection à la base 
    include ("mysqlconnect.php"); 
    //récupération des saisies dans le formulaire 
    $utilisateur = $_POST['utilisateur']; 
    $password = $_POST['password']; 
    $email = $_POST['adresse_email'];  
     
    if((empty($utilisateur)) || (empty($password)))  
       { 
       echo '<script language=javascript> alert ("Vous avez oublié de remplir un champs");</script>'; 
       echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>'; 
       exit; 
       }else{ 
    		$sql = "SELECT loginL , emailL 
        	FROM logins 
        	WHERE loginL = '".$utilisateur."' 
        	OR emailL = '".$email."'"; 
        	mysql_query($sql); 
         	$_nb = mysql_affected_rows() ;           
    		}  
    if ( $_nb < 1 ) 
    	{
    	echo '<link href="css/style2.css" rel="stylesheet" type="text/css" />'; 
    	$sql = "INSERT INTO logins (loginL, passwordL, emailL) 
    	VALUES ('".$utilisateur."' , '".$password."', '".$email."')"; 
    	$result = mysql_query($sql) or die ("Erreur d'Insertion dans la base : ". $sql .'<br />'. mysql_error()); 
    	echo '<script language=javascript> alert ("Login correctement ajouté à la base de données");</script>'; 
        echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="index.php" </SCRIPT>'; 
        exit; 
       }else{ 
    		include"creationcompte.php";
        	}
    ?>
    Moise est peu etre hanté :

  6. #6
    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
    Pas mal d'erreur dans ton code. J'ai essayé de comprendre ce que tu voulais voilà le code remanié:
    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
    <?php 
    //connection à la base 
    include ("mysqlconnect.php"); 
    //récupération des saisies dans le formulaire
     
    $utilisateur = $_POST['utilisateur']; 
    $password = $_POST['password']; 
    $email = $_POST['adresse_email'];  
     
    if((empty($utilisateur)) || (empty($password)))  { 
    	echo '<script language=javascript> alert ("Vous avez oublié de remplir un champs");</script>'; 
    	echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>';
    	}
    else { 
    	$sql = "SELECT loginL , emailL FROM logins 
    		WHERE loginL = '".$utilisateur."' 
    		AND passwordL = '".$password."'"; 
    	$req = mysql_query($sql); 
    	$_nb = mysql_num_rows($req) ;            
    }  
    //si login/pass existe alors redirection vers tapage.php
    if ( $_nb < 1 ) { header("creationcompte.php");}
     
    //sinon => liste des instructions à suivre
    else {
    	...........
    }
    ?>
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  7. #7
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Je vois pas ce que cela va changer ?
    Consultant idéaliste.

  8. #8
    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
    regarde bien son code et tu comprendras
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  9. #9
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Si c'est mysql_num_rows la recette magique alors cela n'apportera rien.
    Consultant idéaliste.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    c'est bon, ca fonctionne

    Par contre il me renvoit jamais dans $_nb > 1, puisque lorque le login utilisé est déja dans la base il m'affiche le message d'erreur sql au lieu de l'alerte js "login existant".

    DOnc voila moi ce que je souhaite c'est lorsque l'utilisateur saisie 1 login déja utilisé il m'affiche "login existant". A la rigueur l'utilisateur peut inscrire plusieur fois la meme email pour 1 login diffèrent.
    personne vois pourquoi :

    voici mon 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
    if((empty($utilisateur)) || (empty($password)))  { 
       echo '<script language=javascript> alert ("Vous avez oublié de remplir un champs");</script>'; 
       echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>'; 
       } 
    else { 
       $sql = "SELECT loginL , emailL 
                FROM logins 
                  WHERE loginL = '".$utilisateur."' 
                  AND passwordL = '".$password."'"; 
       $req = mysql_query($sql); 
       $_nb = mysql_num_rows($req) ;            
    }  
    //si login/pass existe alors redirection vers tapage.php 
    if ( $_nb > 1 ) 
        {
        echo '<script language=javascript> alert ("Login existant");</script>'; 
        echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>'; 
        } 
    //sinon => liste des instructions à suivre 
    else { 
        $sql = "INSERT INTO logins (loginL, passwordL, emailL) 
                VALUES ('".$utilisateur."' , '".$password."', '".$email."')"; 
        $result = mysql_query($sql) or die ("Erreur d'Insertion dans la base : ". $sql .'<br />'. mysql_error()); 
        echo '<script language=javascript> alert ("Login correctement ajouté à la base de données");</script>'; 
        echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="index.php" </SCRIPT>'; 
        exit; 
     
    }
    Bizarre

  11. #11
    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
    En fait la fonction mysql_num_rows() renvoit le nombre de ligne retournée par ta requête donc dans ton cas soit c'est 0 soit c'est 1 mais en aucun cas supérieur à 1 sauf ci 2 pers peuvent avoir le meme login (ce qui n'est pas du tout recommandée).

    Donc $_nb > 1 t'enverra toujours false. Utilise soit if ($_nb<1) pour le cas où aucun résultat trouvé dans la base ou if ($_nb==1) pour le cas où un login/pass est présent dans ta base
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Bein écoute ca revient comme avant, je trouve pas la solution...

    je saisie comme login "moto" qui n'est pas dans ma base et il m'affiche login existant...

    et les écho renvoi

    2
    nb 1
    3

    voici le code lié
    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
    $utilisateur = $_POST['utilisateur']; 
    $password = $_POST['password']; 
    $email = $_POST['adresse_email'];  
    $_nb=0;
    if((empty($utilisateur)) || (empty($password)))  
        {
        echo "1"; 
        echo '<script language=javascript> alert ("Vous avez oublié de remplir un champs");</script>'; 
        echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>'; 
        } 
        else 
            {
            echo "2";
            $sql = "SELECT loginL
                    FROM logins 
                       WHERE loginL = '".$utilisateur."'"; 
               $req = mysql_query($sql); 
               $_nb = mysql_num_rows($req);  
            echo"<br> nb$_nb <br>";       
            }  
    //si login/pass existe alors redirection vers tapage.php 
    if ( $_nb == 1 ) 
       {
       echo "3"; 
       echo '<script language=javascript> alert ("Login existant");</script>'; 
       echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>'; 
       } 
    //sinon => liste des instructions à suivre 
    else {
        echo "4"; 
       $sql2 = "INSERT INTO logins (loginL, passwordL, emailL) 
             VALUES ('".$utilisateur."' , '".$password."', '".$email."')"; 
       $result2 = mysql_query($sql2) or die ("Erreur d'Insertion dans la base : ". $sql2 .'<br />'. mysql_error()); 
       echo '<script language=javascript> alert ("Login correctement ajouté à la base de données");</script>'; 
       echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="index.php" </SCRIPT>'; 
       exit; 
     
    } 
    ?>
    et a la suite de "login existant" effectue la requete...

    Y-a t il 1 erreur dans mon code ? ou mon code est hanté

  13. #13
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    je ne m'y connais pas trop en php mais je me demande si mysql_num_rows ne te renvoie pas 1 si il n'y a pas d'enregistrement correspondant à ta requete. En effte mysql retourne la ligne NULL.

    Apres je en sais pas, je ne connais que tres tres peu php

    Michel

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    comme moi quoi

  15. #15
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Comme je en sais pas je te propose une autre solution

    Tu fais un count
    Tu récuperes le résultat
    sil vaut 0 cest que le login nesxiste pas encore
    sinon c'est qu'il existe

    Bon courage

    Michel

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    je vais suivre ton conseil j'ai rien a perdre

    Toujours la meme chose: voila mon 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
    if((empty($utilisateur)) || (empty($password)))  
        {
        echo '<script language=javascript> alert ("Vous avez oublié de remplir un champs");</script>'; 
        echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>'; 
        exit;
        echo'vide<br>';
        }else{
            $sql = "SELECT COUNT(*)
                    FROM logins 
                       WHERE loginL = '".$utilisateur."'"; 
     
                    $req = mysql_query($sql);
                    echo'plein<br>';
            if($req)
                {
                echo'if(req)<br>';        
                if(mysql_result($req, 0, 0) == 0)
                    {
                    echo'existe pas <br>';
                    $sql = "INSERT INTO logins (loginL, passwordL, emailL) 
                            VALUES ('".$utilisateur."' , '".$password."', '".$email."')";
     
                       $result = mysql_query($sql) or die ("Erreur d'Insertion dans la base : ". $sql .'<br />'. mysql_error()); 
                       echo '<script language=javascript> alert ("Login correctement ajouté à la base de données");</script>'; 
                       echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="index.php" </SCRIPT>'; 
                       exit; 
                    }else{
                        echo'login existant';
                        echo '<script language=javascript> alert ("Login existant");</script>'; 
                        echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="creationcompte.php" </SCRIPT>';
                        exit; 
                        }
                }
            }
    ?>
    Quand je saisie "z" qui n'est pas dans la bdd il me dit qu'il existe

    et les echo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    plein
    if ..
    login existant
    bon tanpis j'en es plus que mar de ce truc lol
    je lui met ca et pis c tout
    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
    if((empty($utilisateur)) || (empty($password)))  
        {
        echo '<script language=javascript> alert ("Vous avez oublié de remplir un champs");</script>'; 
        echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="creationcompte.php" </SCRIPT>'; 
        exit;
        echo'vide<br>';
        }else{
                    $sql = "INSERT INTO logins (loginL, passwordL, emailL) 
                            VALUES ('".$utilisateur."' , '".$password."', '".$email."')";
     
                       $result = mysql_query($sql) or die ("Erreur d'Insertion dans la base : ". $sql .'<br />'. mysql_error()); 
                       echo '<script language=javascript> alert ("Login correctement ajouté à la base de données");</script>'; 
                       echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="index.php" </SCRIPT>'; 
                       exit; 
     
            }
    ?>
    J'vai devenir cinglé.

    Meme comme ca sans gestion d'erreur il me met comme la

    alors que dans la base il n a pas de cerise 7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur d'Insertion dans la base : INSERT INTO logins (loginL, passwordL, emailL) VALUES ('cerise7' , 'cerise7', 'cerise7@redcats.com')
    Duplicate entry 'cerise7' for key 1
    Je ne sais plus quoi faire

Discussions similaires

  1. gerer une erreur de script sur un DROP USER ou un REVOKE
    Par pcouas dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2010, 09h29
  2. Réponses: 5
    Dernier message: 01/03/2010, 16h01
  3. [Dojo] Grid : "Une erreur est survenue" sur IE
    Par viro dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 28/07/2009, 15h33
  4. [Administration] Corriger une erreur de jeunesse sur la structure des repositories
    Par vdaanen dans le forum Subversion
    Réponses: 1
    Dernier message: 10/06/2009, 11h22
  5. Réponses: 5
    Dernier message: 04/01/2008, 09h55

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