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 :

Lecture de données de ma BDD


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Informatique de Gestion
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de Gestion

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Lecture de données de ma BDD
    Bonsoir à tous,

    Pour la faire courte, il m'est demander de récupérer via un formulaire (login.php / méthode = post),

    1) Vérifier si le pseudo entré est compris dans ma BDD -> Members -> pseudo. Si pas, afficher une erreur !
    2) Vérifier si le mot de passe entré correspond à celui du user entré en pseudo. Si pas, afficher une erreur!
    3) Si le mot de passe et le pseudo sont corrects, direction --> profile.php?pseudo="user".

    J'ai essayé plusieurs manière mais mon code ne fonctionne malheureusement pas, quelqu'un pourrait-il me donner des conseils ou de l'aide ?

    Merci

    Login.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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php
     
    require ('function.php');
     
    // Si les champs du formulaire contiennent qqchose
    if(isset($_post['pseudo']) && isset($_post['password'])){
     
        //On nettoie les variables pour eviter les injections
        $user = sanitize($_POST['pseudo']);
        $pw = sanitize($_POST['password']);
        try{
            $query = $pdo->prepare("SELECT * FROM members where pseudo = ?");
            $query->execute(array($_POST['pseudo'])) or die ('erreur pseudo');
            $smt = $query->fetch();
        }
        catch(Exception $e) {
            die("Connexion à la base de donnée impossible !");
        }
     
        $_SESSION['login'] = $smt['pseudo'];
        $_SESSION['pass'] = $smt['password'];
     
        if($_SESSION['login']->rowCount() == 0){
            $error = "Le pseudo '$user' n'existe pas ! Inscrivez-vous";
        }
        else {
            if($pw === $_SESSION['pass']){
                redirect("profile.php?pseudo={$_SESSION['pseudo']}");
            }
            else{
                $error = "Mauvais mot de passe !";
            }
        }
     
    }
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <title>Log In</title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <link href="styles.css" rel="stylesheet" type="text/css"/>
        </head>
        <body>
            <div class="title">Log In</div>
            <div class="menu">
                <a href="index.php">Home</a>
                <a href="signup.php">Sign Up</a>
            </div>
            <div class="main">
                <form action="login.php" method="post">
                    <table>
                        <tr>
                            <td>Pseudo:</td>
                            <td><input id="pseudo" name="pseudo" type="text" value=""></td>
                        </tr>
                        <tr>
                            <td>Password:</td>
                            <td><input id="password" name="password" type="password" value=""></td>
                        </tr>
                    </table>
                    <input type="submit" value="Log In">
                </form>
                <?php
                if(isset($error)){
                    echo "<div class='errors'><br>$error</div>";
                }
                ?>
            </div>
        </body>
    </html>

    function.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
    <?php
     
    //variables de connexion
    $host = "localhost";
    $dbname= "my_social_network_base";
    $user = "root";
    $pw = "root";
     
     
    try{
     
        $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", "$user", "$pw");
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch (Exception $exc){
        die("Erreur lors de l'accès à la base de données.");
    }
     
    function sanitize($var){
        $var = stripslashes($var);
        $var = strip_tags($var);
        $var = htmlspecialchars($var);
    }
     
    function redirect($url, $statusCode = 303){
        header("Location : ' . $url, true, $statusCode'");
        die("");
    }
    ?>
    Et pour terminer, ma base de données.
    Nom : Captue.PNG
Affichages : 142
Taille : 36,7 Ko

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour
    Citation Envoyé par cesarfont001 Voir le message
    3) Si le mot de passe et le pseudo sont corrects, direction --> profile.php?pseudo="user".
    Il ne faut pas passer ce genre d'info en URL.
    Citation Envoyé par cesarfont001 Voir le message
    J'ai essayé plusieurs manière mais mon code ne fonctionne malheureusement pas, quelqu'un pourrait-il me donner des conseils ou de l'aide ?
    Ce n'est pas un symptôme. Qu'est ce qui se passe?

    Citation Envoyé par cesarfont001 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        //On nettoie les variables pour eviter les injections
        $user = sanitize($_POST['pseudo']);
        $pw = sanitize($_POST['password']);
    Tu n'as plus besoin de ça puisque tu utilises déjà une requête préparée, d'autant plus que les variables $user et $pw ne sont pas utilisées pour la requête. Pire, ça va altérer les valeurs entrées par les utilisateurs.

    Citation Envoyé par cesarfont001 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['login'] = $smt['pseudo'];
        $_SESSION['pass'] = $smt['password'];
    Tu dois aussi te rassurer que la session a bien démarré dans la page laquelle tu utiliseras ces valeurs.

    A+.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    "Pour la faire courte"... : merci de faire une recherche !

    Il existe 10000 scripts de connexion, 10000 discussions sur DVP qui traitent le sujet et donnent des réponses !
    On ne va pas répéter 10000 fois la même chose...

    Un exemple ici.

    • 1ère règle : On n'enregistre pas le mot de passe en clair dans la bdd.
    • 2ème règle : On n'affiche jamais le mot de passe et on ne le met jamais en session, ni dans l'URL.
    Dernière modification par Invité ; 09/10/2018 à 10h58.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Informatique de Gestion
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de Gestion

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Justement, le "pourquoi" j'ai mis les choses que l'on m'a demandée, je ne suis pas censé avoir appris les fonctions password_verify, BindPar ...

    C'est pourquoi après 3h de recherche sur le net à tenter de résoudre mon formulaire, j'ai décidé de le poster sur le forum pour avoir de l'aide ...

    Je n'ai en aucun cas d'expérience dans ce domaine. C'est pour cela, que je pense, que les forums sont crées .... non ?!! Alors au lieu de m'envoyer vers des URL du genre moi j'ai fait ceci et ça pour qu'au final en tant que débutant en php, je me retrouve devant du code intermédiaire ou expert ... begrijp ?

    Merci de vos réponses !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Et nous, on n'est pas là pour "faire tes devoirs" à ta place.
    Et on n'est pas non censés connaitre "ce que tu sais ou ce que tu ne sais pas", ni savoir ce que "tu peux ou ne peux pas" utiliser.

    Je ne m'avancerai donc pas à te faire de réponse, qui risque de ne pas correspondre au "cadre de ton exercice".
    Bon courage.
    Dernière modification par Invité ; 09/10/2018 à 10h59.

Discussions similaires

  1. [Mysql] Donnée XML >vers> BDD
    Par largiss dans le forum XQUERY/SGBD
    Réponses: 14
    Dernier message: 28/02/2017, 17h51
  2. [MySQL] Lecture de données de la BDD et utilisation de ces données
    Par craac dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/12/2007, 15h10
  3. [MySQL] lecture de données binaires dans une BDD
    Par Sion_Sempai dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/03/2006, 12h18
  4. Stockage de données cartographiques en BDD
    Par Mack.51 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 16/06/2004, 12h48
  5. lecture de données a partir de fichier
    Par sana dans le forum MFC
    Réponses: 5
    Dernier message: 21/01/2004, 12h57

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