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 :

Compte des résultats d'une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Compte des résultats d'une requête
    Bonjour.
    J'essaie de compter le nombre de ligne que ma requête a trouvée mais la fonction mysqli_num_rows ne s'effectue pas car ma requête retourne un booléen et je ce comprends pas pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $verifLogin = "SELECT * FROM t_login WHERE username=' " . securite_bdd($username) . " ' AND mdp='" . securite_bdd($mdp) . " ' ";
     
    $req_verifLogin = mysqli_query($db, $verifLogin);
    $nbLignesTrouve = mysqli_num_rows($req_verifLogin);
    Merci à celui qui pourrait m'aidé

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 95
    Points
    95
    Par défaut
    C'est surement que ta requête ne trouve aucuns résultat et donc renvois FALSE

    Je te propose de la reprendre, au propre, pour etre sur qu'il n'y a pas de fautes de frappe ; Je peux voir à plusieurs endroit que tu a mit des espaces dans la chaine SQL.
    Forcement : username=' toto ' (note les espaces autour de toto) ne sera pas égal à username='toto' (plus d'espace ce coup là !)

    Donc essaye avec la requete :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $verifLogin = "SELECT * FROM t_login WHERE username='" . securite_bdd($username) . "' AND mdp='" . securite_bdd($mdp) . "'";

    Et dit nous ce que sa donne

  3. #3
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Je l'ai testé dans phpmyadmin et elle me retourne un resultat.
    Même en enlevant les espaces ça ne marche pas

  4. #4
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Enfaite le programme que j'essaie de mettre en place et le suivant :
    -Une page html ou on entre un username et un mot de passe
    -Ensuite une requête sql envoi ces données à la base de données et si la requête retourne une ligne c'est que l'utilisateur est un utilisateur qui existe

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 95
    Points
    95
    Par défaut
    Est-tu sûr de securite_bdd($username) et securite_bdd($mdp) ? Qu'y a t'il dedans ?

    Essaye ta requête en les remplaçant par des données existante dans ta base

  6. #6
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    voila la fonction que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function securite_bdd($string) {
        $db = mysqli_connect('localhost', 'admin', '');
        // On regarde si le type de string est un nombre entier (int)
        if (ctype_digit($string)) {
            $string = intval($string);
        }
        // Pour tous les autres types
        else {
            $string = mysqli_real_escape_string($db, $string);
            $string = addcslashes($string, '%_');
        }
        return $string;
    }
    et voici les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $username = htmlentities($_POST["username"]);
    $mdp = htmlentities($_POST["mdp"]);
    et oui j'ai essayé de les remplacé par des données existante mais la requête retourne toujours un booléen

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 95
    Points
    95
    Par défaut
    Montre le code de toute la page où il y a la requête s'il te plait, et entoure le de la balise [code=php] et [ /code] (bouton # de l'éditeur de message)

  8. #8
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Code php : 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
     
    <?php
     
            function securite_bdd($string) {
                $db = mysqli_connect('localhost', 'admin', '');
     
                $string =  htmlentities($string);
                // On regarde si le type de string est un nombre entier (int)
                if (ctype_digit($string)) {
                    $string = intval($string);
                }
                // Pour tous les autres types
                else {
                    $string = mysqli_real_escape_string($db, $string);
                    $string = addcslashes($string, '%_');
                }
                return $string;
            }
     
            $db = mysqli_connect('localhost', 'admin', '');
            mysqli_select_db($db, "maryny");
     
            if (isset($_POST["login"])) {
     
                $verifLogin = "SELECT * FROM t_login WHERE username='".securite_bdd($_POST["username"])."' AND mdp='". securite_bdd($_POST["mdp"])."'";
                $req_verifLogin = mysqli_query($db, $verifLogin);
                $nbLignesTrouve = mysqli_num_rows($req_verifLogin);
     
     
                if ($nbLignesTrouve == 1) {
                    echo "connecté";
                    $_SESSION["username"] = securite_bdd($_POST["username"]);
                    $_SESSION["mdp"] = securite_bdd($_POST["mdp"]);
                }
            }
            mysqli_close($db);
     
            ?>

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 95
    Points
    95
    Par défaut
    Bon et bien le problème qu'il peux y avoir :
    - Les login/mdp que tu utilisent n'existent pas (ou le mdp et hashé)
    - Tu n'envois pas $_POST['login'] (donc il ne rentre pas dans le if)

    Est-tu sûr d’être bien connecté à mysql et d'avoir choisit la bonne base ?

    Petite remarque : passe $db en parametre de ta fonction securite_bdd (comme sa, tu ne le déclarera qu'une seule fois)
    Je viens de tester vite fait, et chez moi, cela fonctionne très bien.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    - Je suis sûr que le login et mdp que j'entre sont existants mais comment le mdp pourrait être hashé?

    - Si je l'envoi mais plus bas dans la partie html

    -J'ai activé les services mysql et apache, le nom de la base est correct

    -ça t'affiche "connecté" chez toi?

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 95
    Points
    95
    Par défaut
    Oui, cela m'affiche 'connecté'.

    J'ai modifier quelque peu ta page pour me passer du $_POST, et insérer une ligne username='toto' et mdp='toto', cela m'affiche 'connecté'.

    Est-ce toi qui a remplit la base ?

  12. #12
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    oui c'est moi, je l'ai rempli avec mon prénom et comme mdp 123(qui est un string)

  13. #13
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Et j'ai vérifié le contenu du $_POST après l'envoi et le contenu correspond aux données de la base de données

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 95
    Points
    95
    Par défaut
    Tes colonnes s’appellent bien comme sa (username, mdp)?

    Moi pour le test, j'ai créer seulement 2 colonnes de type varchar(32) remplit donc avec "toto" et "toto" et la requete

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $verifLogin = "SELECT * FROM t_login WHERE username='".securite_bdd('toto')."' AND mdp='".securite_bdd('toto')."'";
    m'affiche bien 'connecté'

    Je ne voit pas trop ce qu'il peux clocher....

  15. #15
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    oui le nom des colonnes est justes

    Mes colonnes aussi sont des varchars

    Si je te donne la page complète(php+html) tu peux testé avec le $_POST?

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 95
    Points
    95
    Par défaut
    Oui, si tu veux, envois ça

  17. #17
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
    session_start();
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title></title>
        </head>
        <body id="body_login">
            <?php
     
            function securite_bdd($db,$string) {
                $string = htmlentities($string);
                // On regarde si le type de string est un nombre entier (int)
                if (ctype_digit($string)) {
                    $string = intval($string);
                }
                // Pour tous les autres types
                else {
                    $string = mysqli_real_escape_string($db, $string);
                    $string = addcslashes($string, '%_');
                }
                return $string;
            }
     
            $db = mysqli_connect('localhost', 'admin', '');
            mysqli_select_db($db, "maryny");
     
            if (isset($_POST["login"])) {
                $verifLogin = "SELECT * FROM t_login WHERE username='".securite_bdd($db,'roberto')."' AND mdp='".securite_bdd($db,'123')."'";
                $req_verifLogin = mysqli_query($db, $verifLogin);
                $nbLignesTrouve = mysqli_num_rows($req_verifLogin);
     
     
                if ($nbLignesTrouve == 1) {
                    echo "connecté";
                    $_SESSION["username"] = securite_bdd($_POST["username"]);
                    $_SESSION["mdp"] = securite_bdd($_POST["mdp"]);
                }
            }
            mysqli_close($db);
            ?>
            <link rel="stylesheet" type="text/css" href="css.css"/>
            <div id="login_conteneur">
                <div id="login">
                    <form action="login.php" method="post">
                        <table>
                            <tr><td><b>Username</b></td><td><input type="text" name="username" class="input"/></td><br/></tr>
                            <tr><td><br /></td></tr>
                            <tr><td><b>Password</b></td><td><input type="password" name="mdp" class="input"/></td><br/></tr>
                            <br /><tr><td colspan="2"><center><input type="submit" name="login" value="Login" class="bouton"/></center></td></tr>
                    </form>
                    <form action="accueil.php" method="post">
                        <tr><td colspan="2"><center><input type="submit" name="retour" value="Accueil" class="bouton"/></center></td></tr>
                    </form>
                    </table>
     
                </div>
            </div>
    </body>
    </html>

  18. #18
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 95
    Points
    95
    Par défaut
    Cela m'affiche bien 'connecté'...

    Est tu sur de ta connexion à la BDD ? L'utilisateur admin existe ? Il n'a pas de mot de passe ? Dans le doute, tu peux recréer un utilisateur via phpmyadmin, et lui donner les privilèges pour se connecter...

    (pense aux balises [code] )

  19. #19
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    C'est vrai que maintenant que tu le dis je suis pas sûr du nom d'utilisateur et du mot de passe par défaut de phpmyadmin

  20. #20
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    et désolé pour les balises code

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Numérotation automatique des résultats d'une requête
    Par Nicola dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/07/2006, 19h57
  2. Réponses: 2
    Dernier message: 02/12/2005, 21h21
  3. Réponses: 1
    Dernier message: 02/12/2005, 20h18
  4. Pagination des résultats d'une requête
    Par dl_jarod dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2005, 14h30
  5. Calcul à partir des résultats d'une requète
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 29/09/2005, 17h46

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