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 :

Difficulté de creation d'une page de connexion en PHP


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 5
    Par défaut Difficulté de creation d'une page de connexion en PHP
    Bonjour,

    Je suis en train d'essayer de réaliser une page d'accès membre via un identifiant. J'ai pour cela créé 1 table "membres" (id, nom, pass, email, date_inscription)
    une fois le fichier inscription.php
    une fois le fichier connexion.php.
    j'avais au depart une version avec mysqli, j'ai voulu migrer à PDO.
    Pour ce qui est de l'inscription, tout se passe bien. lorsque les champs ne sont pas ou mal remplis il y a un message d'erreur et lorsqu'ils sont bien remplis les données sont bien ajoutées à la table "membres".

    En revanche impossible de me connecter. J'ai essayé un tas de choses, cherché sur les forums mais j'y arrive toujours pas. Que le pass soit bon ou pas,on a toujours une page blanche.
    s'il vous plait, comment m'y prendre ?
    ci-dessous le code source de connexion.

    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
    <?php
    // Connexion à la base de données
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=xxxxxx;charset=utf8', 'xxxx', 'xxxxx');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
     
    if(isset($_POST['pass'])) {
      extract($_POST);
     
    // Récupération des 10 derniers messages
    $req = $bdd->prepare('SELECT * FROM membres WHERE pass= :pass');
     
    $req->execute(array(
     
        'pass' => $pass));
     
    $resultat = $req->fetch();
     
     
    // Comparaison du pass envoyé via le formulaire avec la base
     
    $isPasswordCorrect = password_verify($_POST['pass'], $resultat['pass']);
     
     
    if (!$resultat)
     
    {
     
        echo 'Mauvais identifiant !';
     
    }
     
    else
     
    {
     
        if ($isPasswordCorrect) {
     
            session_start();
     
            $_SESSION['pass'] = $pass;
     
            echo 'Vous êtes connecté !';
     
        }
     
        else {
     
            echo 'Mauvais identifiant!';
     
        }
     
    }
    }
     
     
     
    ?>

  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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu utilises password_hash pour l'enregistrement, tu ne peux pas faire la comparaison directement en SQL : il faut faire la recherche par rapport à l'identifiant et ensuite utiliser password_verify :
    Quelque chose de ce genre:
    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
    $req = $bdd->prepare('SELECT pass FROM membres WHERE login= :login');
     
    $req->execute(array(':login' => $_POST['login']));
     
    if (($resultat = $req->fetch()) !== false) {
     
        // Comparaison du pass envoyé via le formulaire avec la base
        $isPasswordCorrect = password_verify($_POST['pass'], $resultat['pass']);
        if ($isPasswordCorrect) {
            echo "OK !";
        } else {
            echo "Mot de passe incorrect";
        }
    } else {
        echo "Utilisateur non trouvé";
    }
    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. Difficulté de creation d'une Union entre 3 requetes
    Par Guillaume 78 dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 04/06/2008, 18h15
  2. creation d'une page d authentification sur access
    Par sophialahlou dans le forum IHM
    Réponses: 2
    Dernier message: 14/09/2007, 10h32
  3. Creation d'une page entierement en code behind
    Par superfly dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/09/2007, 17h52
  4. Réponses: 16
    Dernier message: 16/08/2006, 15h24
  5. Réponses: 4
    Dernier message: 18/10/2005, 15h21

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