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

Langage PHP Discussion :

page login


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Points : 4
    Points
    4
    Par défaut page login
    Salut,

    j'ai créer un espace membre... tout marche sauf la page login.php...

    un message d'erreur apparaît : PHP Notice: Trying to get property of non-object in /home/concep19/mcaq.ca/tutoriel/login.php on line 7

    Comment réglé cela ?

    voici mon 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
    <?php
    if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){
        require_once 'inc/db.php';
        $req = $pdo->prepare('SELECT * FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
        $req->execute(['username' => $_POST['username']]);
        $user = $req->fetch();
           if(password_verify($_POST['password'], $user->password)){
        session_start();      
        $_SESSION['auth'] = $user;
        $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';  
        header('location: account.php');
        exit();  
     
      }elseif{
          $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte';
      }    
     
    }
    ?>  
     
      <?php require 'inc/header.php'; ?>
     
        <h1>Se connecter</h1>
    <form action="" method="POST">
     
        <div class="form-group">
            <label for="">Pseudo ou Email</label>
            <input type="text" name="username"  class="form-control"/>
        </div>
     
         <div class="form-group">
            <label for="">Mot de passe</label>
            <input type="password" name="password" class="form-control"/>
        </div>
     
        <button type="submit" class="btn btn-primary" >Se connecter</button>
     
    </form>
     
    <?php require 'inc/footer.php'; ?>
    Pouvez vous m'aider SVP?

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    A mon avis $user est un array et non un objet !

    Essai avec $user['password']

  3. #3
    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
    En supposant que la ligne 7 est bien celle-ci : if(password_verify($_POST['password'], $user->password)){, je dirais que l'erreur vient du fait que $user n'est pas un objet.
    Pour que $user soit un objet, il faut que tu précises le mode de récupération de fetch avec soit PDO::FTECH_OBJ pour avoir un objet générique, soit PDO::FETCH_CLASS si tu as défini une classe Utilisateur (par exemple) que tu veux utiliser.

    Au passage, ça pourrait être une bonne idée de vérifier si la requête renvoie quelque chose avant d'essayer de l'exploiter
    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
    $user = $req->fetch(PDO::FETCH_OBJ);
    if ($user !== false) {
        if (password_verify($_POST['password'], $user->password)) {
            session_start();
            $_SESSION['auth'] = $user;
            $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
            header('location: account.php');
            exit();
        }
        else {
            // mot de passe incorrect
            $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrect';
        }
    } else {
        // login non trouvé
        $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrect';
    }
    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. Problème page login
    Par bouzoubad dans le forum Android
    Réponses: 9
    Dernier message: 31/01/2013, 21h19
  2. Problème page de login
    Par HakunA59 dans le forum Silverlight
    Réponses: 4
    Dernier message: 17/12/2010, 15h37
  3. [MySQL] recharger la même page login en cas de problème
    Par batoule80 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/09/2008, 05h44
  4. problème page de login
    Par cyril911 dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2007, 16h14
  5. Réponses: 2
    Dernier message: 26/05/2006, 00h04

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