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 :

Trouver les utilisateurs dans une base de donnée MySQL à partir d'un fichier de connexion PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Trouver les utilisateurs dans une base de donnée MySQL à partir d'un fichier de connexion PHP
    Bonjour à tous,

    Dans le cadre de mes études en informatique, je dois créer un petit site web en HTML et inclure un formulaire en HTML avec sa base de donnée en MySQL.

    J'ai déjà créer le code PHP pour l'inscription, cela fonctionne correctement. Les utilisateurs renseignés sont correctement enregistrer dans la base de donnée.

    J'ai créer le code PHP pour la connexion aux compte utilisateur sur le site web mais j'ai un problème.

    Après avoir cliquer sur le bouton connexion sur mon site, les utilisateurs ne sont pas retrouver dans la base de donnée, j'ai le message dans le navigateur suivant : Nom d'utilisateur ou mot de passe incorrect.
    Pourtant, je retrouve l'adresse mail et le mot de passe de l'utilisateur dans la base de donnée.
    J'ai vérifier plusieur fois mais il n'y a pas d'erreur dans les identifiants.

    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
     
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
     
     
    // Vérifie si le formulaire a été soumis
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        // Connexion à la base de données (remplacez les valeurs par les vôtres)
        $servername = "localhost";
        $username = "user_admin";
        $password = "admin";
        $dbname = "client_mybase";
     
        // Créer une connexion
        $conn = new mysqli($servername, $username, $password, $dbname);
     
        // Vérifier la connexion
        if ($conn->connect_error) {
            die("La connexion a échoué : " . $conn->connect_error);
        }
     
        // Récupérer les valeurs du formulaire
        $user_email = $_POST['email'];
        $user_password = $_POST['password']; // Utilisation d'un nom de variable différent
     
     
        // Requête SQL pour vérifier l'utilisateur
        // Utilisation de la préparation de requête pour éviter les injections SQL
        $sql = "SELECT * FROM users WHERE email=? AND password=?";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("ss", $email, $user_password);
        $stmt->execute();
        $result = $stmt->get_result();
     
        // Vérifier si l'utilisateur existe dans la base de données
        if ($result->num_rows > 0) {
            // L'utilisateur est authentifié avec succès
            echo "Connexion réussie ! Bienvenue, $email.";
        } else {
            // L'utilisateur n'est pas trouvé ou les informations sont incorrectes
            echo "Nom d'utilisateur ou mot de passe incorrect.";
        }
     
        // Fermer la connexion à la base de données
        $stmt->close();
        $conn->close();
    }
    ?>
    Je ne trouve pas ce qui ne va pas dans le code php, est-ce que quelqu'un aurait une idée ?

    Merci beaucoup.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 218
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 218
    Points : 8 449
    Points
    8 449
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $conn = new mysqli($servername, $username, $password, $dbname);
    Tu fais des études, lance-toi dans de bonnes conditions et utilise la lib PHP standard d'accès aux BdD, j'ai nommé PDO => https://php.net/pdo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $user_email = $_POST['email'];
    $user_password = $_POST['password']; // Utilisation d'un nom de variable différent
    ...
    $stmt->bind_param("ss", $email, $user_password);
    Il y a une erreur dans le nom de tes variables => D'un côté tu as $user_email, de l'autre $email



    PS : Généralement on ne fait pas ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    Mais plutôt cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (!isset($_POST['email'], $_POST['password'])) {
        exit('Formulaire incomplet');
    }
    // Poursuivre
    // On sait que $_POST['email'] et $_POST['password'] sont valorisées
    // ...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai fais les changements dans le code PHP.

    Voici le code modifier :

    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
     <?php
     
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
     
     
    // Vérifie si le formulaire a été soumis
    if (!isset($_POST['email'], $_POST['password'])) {
        exit('Formulaire incomplet');
    }
     
     
        // Connexion à la base de données (remplacez les valeurs par les vôtres)
        $servername = "localhost";
        $username = "user_admin";
        $password = "admin";
        $dbname = "client_mybase";
     
        $conn = new mysqli($servername, $username, $password, $dbname);
     
        // Vérifier la connexion
        if ($conn->connect_error) {
            die("La connexion a échoué : " . $conn->connect_error);
        }
     
        // Récupérer les valeurs du formulaire
        $email = $_POST['email'];
        $password = $_POST['password']; 
     
     
     
        // Requête SQL pour vérifier l'utilisateur
        // Utilisation de la préparation de requête pour éviter les injections SQL
        $sql = "SELECT * FROM users WHERE email=? AND password=?";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("ss", $email, $user_password);
        $stmt->execute();
        $result = $stmt->get_result();
     
        // Vérifier si l'utilisateur existe dans la base de données
        if ($result->num_rows > 0) {
            // L'utilisateur est authentifié avec succès
            echo "Connexion réussie ! Bienvenue, $email.";
        } else {
            // L'utilisateur n'est pas trouvé ou les informations sont incorrectes
            echo "Nom d'utilisateur ou mot de passe incorrect.";
        }
     
        // Fermer la connexion à la base de données
        $stmt->close();
        $conn->close();
    }
    ?>
    La page ne souvre plus dans le navigateur.
    Je crois qu'il y a un problème pour la connexion au serveur.
    Je viens de commencer le PHP, est-ce que tu pourrais m'expliquer comment faire la connexion avec PDO ?

    Merci beaucoup.

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 218
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 218
    Points : 8 449
    Points
    8 449
    Billets dans le blog
    17
    Par défaut
    La page ne souvre plus dans le navigateur.
    Impossible de t'aider avec un descriptif si léger

    est-ce que tu pourrais m'expliquer comment faire la connexion avec PDO ?
    La doc : https://www.php.net/manual/fr/book.pdo.php

    Article : https://phpdelusions.net/pdo

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    J'ai regarder la documentation pour la connexion avec PDO.
    Je pense avoir bien fait la connexion mais je reçois le message d'erreur suivant quand je clique sur le bouton connexion du formulaire HTML. : Cette page ne fonctionne pasImpossible de traiter cette demande via localhost à l'heure actuelle.
    HTTP ERROR 500


    Voici mon code PHP :

    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
     
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
     
     
    // Vérifie si le formulaire a été soumis
    if (!isset($_POST['email'], $_POST['password'])) {
        exit('Formulaire incomplet');
    }
     
     
        // Connexion à la base de données 
        $user = "user_admin";
        $password = "admin";
        $dbh = new PDO('mysql:host=localhost;dbname=client_mybase', $user, $pass);
     
        // Vérifier la connexion
        if ($conn->connect_error) {
            die("La connexion a échoué : " . $conn->connect_error);
        }
     
        // Récupérer les valeurs du formulaire
        $email = $_POST['email'];
        $password = $_POST['password']; 
     
     
     
        // Requête SQL pour vérifier l'utilisateur
        // Utilisation de la préparation de requête pour éviter les injections SQL
        $sql = "SELECT * FROM users WHERE email=? AND password=?";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("ss", $email, $user_password);
        $stmt->execute();
        $result = $stmt->get_result();
     
        // Vérifier si l'utilisateur existe dans la base de données
        if ($result->num_rows > 0) {
            // L'utilisateur est authentifié avec succès
            echo "Connexion réussie ! Bienvenue, $email.";
        } else {
            // L'utilisateur n'est pas trouvé ou les informations sont incorrectes
            echo "Nom d'utilisateur ou mot de passe incorrect.";
        }
     
        // Fermer la connexion à la base de données
        $stmt->close();
        $conn->close();
    }
    ?>

    Est-ce que il y aurait encore une erreur dans ce code ?

    Merci beaucoup.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 88
    Points : 162
    Points
    162
    Par défaut
    Bonjour, fais étape par étape pour être sur que la connexion à la bdd fonctionne puis ton select etc
    Tu utilises con_error sauf que c'est utilisé via msqli et pas pdo ,
    En faites rectification tu as fait un mélange.
    Repars d'une simple connexion qui fonctionne et fait ta requête comme ca par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = "SELECT * FROM users WHERE email = ? AND password = ?";
    $stmt = $dbh->prepare($sql);
    $stmt->bindParam(1, $email, PDO::PARAM_STR);
    $stmt->bindParam(2, $password, PDO::PARAM_STR);
    $stmt->execute();
    Si je peux me permettre une remarque quand tu récupère les informations d'un utilisateur ne récupère que ce qui va t'être utilise , c'est très rare les situations ou tu fais select *. Mais c'est pas forcément pertinent dans l'immédiat
    Après tu récupères tes données et tu en fais ce que tu veux

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 311
    Points : 39 677
    Points
    39 677
    Billets dans le blog
    9
    Par défaut
    Mais qu'apprend-on dans les écoles d'informatique pour que tous les développeurs codent systématiquement SELECT *

    Voyez ICI pourquoi il ne pas utiliser SELECT *, à de rares exceptions près.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par gabi7756 Voir le message
    Bonjour, fais étape par étape pour être sur que la connexion à la bdd fonctionne puis ton select etc
    Tu utilises con_error sauf que c'est utilisé via msqli et pas pdo ,
    En faites rectification tu as fait un mélange.
    Repars d'une simple connexion qui fonctionne et fait ta requête comme ca par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = "SELECT * FROM users WHERE email = ? AND password = ?";
    $stmt = $dbh->prepare($sql);
    $stmt->bindParam(1, $email, PDO::PARAM_STR);
    $stmt->bindParam(2, $password, PDO::PARAM_STR);
    $stmt->execute();
    Si je peux me permettre une remarque quand tu récupère les informations d'un utilisateur ne récupère que ce qui va t'être utilise , c'est très rare les situations ou tu fais select *. Mais c'est pas forcément pertinent dans l'immédiat
    Après tu récupères tes données et tu en fais ce que tu veux


    Bonjour,

    Désolé pour la petite absence, je n'ai pas eu beaucoup de temps pour travailler la dessus.

    J'ai recommencé le code depuis le début.
    Merci beaucoup pour ton aide, le code fonctionne normalement.
    Les utilisateurs renseigner sont bien enregistrés dans la base de donnée.

    Merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/03/2023, 20h57
  2. Réponses: 9
    Dernier message: 11/04/2020, 10h48
  3. Réponses: 6
    Dernier message: 05/10/2017, 14h45
  4. Réponses: 2
    Dernier message: 23/05/2014, 08h41
  5. Réponses: 3
    Dernier message: 15/10/2012, 15h19

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