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 :

Validation Form/Connexion PDO/PHP


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Validation Form/Connexion PDO/PHP
    Bonjour tout le monde au fait j'aimerai bien avoir votre soutient car j'ai un formulaire qui me permet de me connecter sur mon application mais quand je renseigne les vrais informations que j'ai directement copié/colé de la base de donnée ça m'affiche nom d'utilisateur et mot de passe non trouvé...j'ai essayé à plusieurs reprise de trouver l erreur mais en vain...Là j'ai vraiment besoin de votre aide SVP

    VOICI MON CODE ENTIER
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    <?php
        session_start();
     
        //DB configuration Constants
        define('_HOST_NAME_', '127.0.0.1');
        define('_USER_NAME_', 'root');
        define('_DB_PASSWORD', '');
        define('_DATABASE_NAME_', 'ads_database');
     
        //PDO Database Connection
        try {
            $databaseConnection = new PDO('mysql:host='._HOST_NAME_.';dbname='._DATABASE_NAME_, _USER_NAME_, _DB_PASSWORD);
            $databaseConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $e) {
            echo 'ERROR: ' . $e->getMessage();
        }
     
        if(isset($_POST['submit'])){
            $errMsg = '';
            //username and password sent from Form
            $username = trim($_POST['username']);
            $password = trim($_POST['password']);
     
            if($username == '')
                $errMsg .= 'You must enter your Username<br>';
     
            if($password == '')
                $errMsg .= 'You must enter your Password<br>';
     
     
            if($errMsg == ''){
                $records = $databaseConnection->prepare('SELECT nom_user, pass_user FROM  user WHERE nom_user = :username');
                $records->bindParam(':username', $username);
                $records->execute();
                $results = $records->fetch(PDO::FETCH_ASSOC);
                if(count($results) > 0 && password_verify($password, $results['pass_user'])){
                    $_SESSION['username'] = $results['username'];
                    header('location:dashboard.php');
                    exit;
                }else{
                    $errMsg .= 'Username and Password are not found<br>';
                }
            }
        }
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Login Page PHP Script</title>
        <style type="text/css">
        body
        {
            font-family:Arial, Helvetica, sans-serif;
            font-size:14px;
        }
        label
        {
            font-weight:bold;
            width:100px;
            font-size:14px;
        }
        .box
        {
            border:1px solid #006D9C;
            margin-left:10px;
            width:60%;
        }
        .submit{
            border:1px solid #006D9C;
            background-color:#006D9C;
            color:#FFFFFF;
            float:right;
            padding:2px;
        }
        </style>
    </head>
    <body bgcolor="#FFFFFF">
     
        <div align="center">
            <div class="tLink"><strong>Login Detail:</strong></div><br />
            <div style="width:300px; border: solid 1px #006D9C; " align="left">
                <?php
                    if(isset($errMsg)){
                        echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>';
                    }
                ?>
                <div style="background-color:#006D9C; color:#FFFFFF; padding:3px;"><b>Login</b></div>
                <div style="margin:30px">
                    <form action="" method="post">
                        <label>Username  :</label><input type="text" name="username" class="box"/><br /><br />
                        <label>Password  :</label><input type="password" name="password" class="box" /><br/><br />
                        <input type="submit" name='submit' value="Submit" class='submit'/><br />
                    </form>
                </div>
            </div>
        </div>
    </body>
    </html>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $password = trim($_POST['password']);
    // ...
    password_verify($password, $results['pass_user'])
    Je suppose que tu fais le même trim et que tu passes le mot de passe dans password_hash avant de l'enregistrer.

    Pour cibler un peu, tu peux décomposer la condition pour avoir des message différents selon l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(count($results) == 0){
        $errMsg .= 'Username not found<br>';
    } elseif (!password_verify($password, $results['pass_user'])){
        $errMsg .= 'Wrong password<br>';
    }else{
        $_SESSION['username'] = $results['username'];
        header('location:dashboard.php');
        exit;
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonjour @Celira je viens de décomposer la condition et on me dit maintenant que le mot de passe n'est pas bon même si je renseigne un faux pseudo (pour tester)

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bon,donc tu as un problème au niveau de la vérification. En fait, fetch (en mode FETCH_ASSOC) retourne soit un tableau (si quelque chose est trouvé), soit false si il n'y a aucun résultat (ou une erreur). Or count appliqué à autre chose qu'un tableau ou un objet retourne 1.
    Donc la condition (count($results) == 0) va toujours renvoyer vrai. Il vaut mieux donc la remplacer par ($results === false).
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2009, 14h43
  2. [XSD] Problème validation/compréhension xml/xsd PHP
    Par speedev dans le forum Valider
    Réponses: 3
    Dernier message: 03/12/2008, 14h02
  3. [PostGreSQL] problème de connexion sous PHP-IIS
    Par abambad dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/05/2008, 14h44
  4. [ODBC] Problème exécution requête avec connexion ODBC/PHP
    Par nicaud dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/04/2008, 13h20
  5. [Oracle] Problème de connexion avec PHP 5.1.4
    Par Mimo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/09/2006, 17h41

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