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 :

tester si identifiant et mot de passe présents dans la base mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Points : 134
    Points
    134
    Par défaut tester si identifiant et mot de passe présents dans la base mysql
    Bonjour,

    J'ai écrit ce script qui teste si le membre est présent dans la base de donnée mysql?

    La première partie qui teste si l'utilisateur a correctement complétè son formulaire fonctionne.

    Mais le test si le membre est dans la base ne fonctionne pas si vous avez des pistes pour m'indiquer si c'est le code ou ma méthode qui cloche.

    Merci d'avance.


    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
    <?php
     
    //test si formulaire non vide
     
          $id = $_POST['login'];
          $pwd = $_POST["pass"];
     
     if (empty($id) | empty($pwd)) 
     {
      echo 'login et password ne sont pas inscrits du tout';
    }
        exit;
        ?>
     
           <?php
     
            $titre = "login";
            //connexion avec la base de données
            $database = new mysqli("localhost", "root", "", "login");
            //message d'erreur
            if (mysqli_connect_errno()) {
                echo("<p>Echec de la connexion avec la base de données.</p>");
                exit();
            }
            //requête
            $query = "SELECT EXISTS(SELECT * FROM identifiant) ";
            //préparation de la requête
            $stmt = $database -> prepare($query);
            //binding des paramètres
     
            //exécution de la requête
            $stmt -> execute();
            //binding des résultats
            $stmt -> bind_result($log);
            //récupération des résultats
            $stmt -> fetch();
            //arrêt du traitement
            $stmt -> close();
            //coupure de la connection avec la base de données
            $database -> close();
            //traitement des résultats (pour le moment, un simple 'echo')
     
            if (empty($log)) 
            {
            echo 'login pas inscrit dans la base';
            }
            else {
            echo("<p>" . $log . "</p>");
            } 
            ?>

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    La ligne 12 arrête l'exécution du script.

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Points : 134
    Points
    134
    Par défaut
    Bon j'ai changé de méthode avec un fichier connexion et la méthode PDO :

    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
    <!DOCTYPE html >
    <html>
    	<head>
    		<meta charset ="UTF-8" />
    		<title> connexion bd</title>
    	</head>
    		<body>
     
     
     
     
    <?php
    try
          {
           $bd = new PDO('mysql:host=localhost;dbname=login', 'root', '');
    	  echo'connexion reussie!!';
    	 }
     
       catch(PDOException $e)
         {
          die('Erreur : '.$e->getMessage());
         }
    ?>
     
    </body>
    </html>
    ça fonctionne

    En revanche je ne sais pas comment tester si la personne est bien enregistrée dans la base de donnée?

    Cordialement

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avec une requête COUNT par exemple (et en PDO) :
    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
    <?php
     
    if (empty($_POST['login']) | empty($_POST['pass'])) 
     {
           echo 'login et password ne sont pas inscrits du tout';
    }
    else {
            //connexion avec la base de données
            $pdo = new PDO("mysql:host=localhost;dbname=login", "root", "");
            $sth=  $pdo->prepare('SELECT COUNT(*) as nb FROM identifiant WHERE login = ? and password = ?');
            $stmt->execute(array($_POST['login'], ($_POST['pass']));
            $row = $stmt -> fetch();
     
           if ($row['nb'] === 0) 
            {
            echo 'login pas inscrit dans la base';
            }
            else {
                echo '<p>' . $log . '</p>';
            } 
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Points : 134
    Points
    134
    Par défaut
    Merci sabotage,

    Je teste ce script et je te fais un feedback.

    thanks

    Bonne journée.

  6. #6
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Points : 134
    Points
    134
    Par défaut
    Bonjour,

    J'ai ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Undefined variable: stmt in C:\xampp\htdocs\page3_admin.php on line 24
    .

    En fait ma bd est toute simple. Nom : Capture_bd_mysql.PNG
Affichages : 6175
Taille : 1,9 Ko

    Le script corrigé.

    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
        <?php
     
    if (empty($_POST['login']) | empty($_POST['pass'])) 
     {
           echo 'login et password ne sont pas inscrits du tout';
    }
    else {
            //connexion avec la base de données
            $pdo = new PDO("mysql:host=localhost;dbname=login", "root", "");
            $sth=  $pdo->prepare('SELECT COUNT(*) as nb FROM id WHERE login = ? and password = ?');
            $stmt->execute(array($_POST['login'], ($_POST['pass'])));
            $row = $stmt -> fetch();
     
           if ($row['nb'] === 0) 
            {
            echo 'login pas inscrit dans la base';
            }
            else {
                echo '<p>' . $log . '</p>';
            } 
    }
        ?>

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si ta table s'appelle bien "identifiant" comme semblait le dire ton code !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       $sth=  $pdo->prepare('SELECT COUNT(*) as nb FROM identifiant WHERE id = ? and password = ?');
    $sth->execute(array($_POST['login'], $_POST['pass']));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 597
    Points : 883
    Points
    883
    Par défaut
    Bonsoir Sabotage.
    Pourquoi COUNT(*) et non simplement * ? Il me semble que COUNT() ne devait être utilisé que pour des requêtes avec GROUP BY ...
    Yves
    Participez vous aussi !
    Message utile
    Discussion résolue

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme son nom l'indique COUNT sert à compter les lignes.

    On peut aussi faire comme ça, par exemple si on veut vérifier et lire des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      $sth = $pdo->prepare('SELECT prenom FROM identifiant WHERE id = ? and password = ?');
    $sth->execute(array($_POST['login'], $_POST['pass']));
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
       session_start(); 
       $_SESSION['prenom'] = $row['prenom']
    }
    else{
       header('Location: authentification.php');
       exit();
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/12/2015, 14h34
  2. [XL-2010] Cacher mot de passe présent dans mon code
    Par Surinox dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/06/2015, 15h51
  3. Fonction de hash de mot de passe à stocker dans une base de données
    Par Leaffy dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 27/12/2011, 23h21
  4. [XL-2003] Protéger un mot de passe présent dans une macro
    Par Chevrefeuille dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/03/2010, 20h17

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