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 :

Comment récupérer une valeur dans une table de BDD


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Concepteur de systèmes mécaniques
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Concepteur de systèmes mécaniques

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Comment récupérer une valeur dans une table de BDD
    Je souhaite récupérer la valeur d'un champ (qui correspond à un utilisateur en cours) dans une table de base de donnée pour en suite comparer cette à une autre.

    Comment je fais pour faire ça.

    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
     
     
    function logged_only2(){
        if(session_status() == PHP_SESSION_NONE){
            session_start();
        }
        require_once 'inc/db.php';
        $req = $pdo->prepare('SELECT * FROM users WHERE id =.......');
        $req->execute(.....);
        $user = $req->fetch();
     
     
        if ($user->subscribed =='1') {
            $_SESSION['auth'] = $user;
            $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
            header("Location: Page2.php");
            exit();
            }
    }

    Le but c'est que une fois que l'utilisateur est logué sans qu'il ai à faire quoi ce ce soit d'autre, je puisse le garder sur la page qu'il se trouve ou que je puisse le rediriger vers une autre page s'il n'a pas dans la base de donnée les conditions pour y rester.

    Pour cela j'aurai besoin de récupérer l'id de l'utilisateur connécté pour aller chercher dans la base de donnée, les données qui lui correspondent.

    Qu'est-ce que je mets à WERE id ?
    Et qu'est-ce que je mets à execute() ?

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

    Classiquement, au moment de la connexion réussie, on enregistre l'id dans une variable de SESSION : $_SESSION['id_user'].
    A toi de nous dire si c'est bien le cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        $req = $pdo->prepare('SELECT * FROM users WHERE id = :id');
        $req->execute( array( ':id'=> $_SESSION['id_user'] ) );

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Concepteur de systèmes mécaniques
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Concepteur de systèmes mécaniques

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Un grand merci jreaux62

    Je viens de tester le code que tu m'a suggèré.

    Il m'a l'ère de fonctionner, mais il me renvoie l'erreur qui dit que la variable id n'est pas défini.

    Lorsque je rajoute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        $id_user = $_SESSION['id_user'];
    entre les lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    require_once 'inc/db.php';
     
    et
     
    $req = $pdo->prepare('SELECT * FROM users WHERE id = :id');
    Je suis débutante dans l'apprentissage du PHP

    Cela fait des jours que je suis dessus et perso je suis fatiguée, car je passe des heures et des heures à chercher une solution.

    Je crois que la programmation n'est pas faite pour moi.

    Comment je dois procéder pour définir $id_user

    Voici le code que j'ai :


    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
     
     
    function logged_only2(){
        if(session_status() == 1){
            session_start();
        }
        require_once 'inc/db.php';
        $id_user = $_SESSION['id_user'];
        $req = $pdo->prepare('SELECT * FROM users WHERE id = :id');
        $req->execute(array( ':id'=> $_SESSION['id_user']));
        $user = $req->fetch();
     
     
        if ($user->subscribed =='1') {
            $_SESSION['auth'] = $user;
            $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
            header("Location: Page2.php");
            exit();
            }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il faut montrer le code de traitement au moment de la connexion.
    C'est là qu'il faut définir $_SESSION['id_user'] (si la connexion est ok)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Concepteur de systèmes mécaniques
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Concepteur de systèmes mécaniques

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ok merci

    à la connexion j'ai ça :

    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
     
    require_once 'inc/functions.php';
    reconnect_from_cookie();
    /*if(isset($_SESSION['auth'])){
        header('Location: account.php');
        exit();
    }*/
     
    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 ($user &&  password_verify($_POST['password'], $user->password)) {
            $location = 'account';
            if ($user->subscribed =='1') {
                $location = 'account2';
            }
            $_SESSION['auth'] = $user;
            $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
            header("Location: {$location}.php");
            exit();
        }
        $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte';
    }
    ?>
    Et voici la fonction reconnect_from_cookie()

    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
     
    function reconnect_from_cookie(){
        if(session_status() == PHP_SESSION_NONE){
            session_start();
        }
        if(isset($_COOKIE['remember']) && !isset($_SESSION['auth']) ){
            require_once 'db.php';
            if(!isset($pdo)){
                global $pdo;
            }
            $remember_token = $_COOKIE['remember'];
            $parts = explode('==', $remember_token);
            $user_id = $parts[0];
            $req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
            $req->execute([$user_id]);
            $user = $req->fetch();
            if($user){
                $expected = $user_id . '==' . $user->remember_token . sha1($user_id . 'ratonlaveurs');
                if($expected == $remember_token){
                    session_start();
                    $_SESSION['auth'] = $user;
                    setcookie('remember', $remember_token, time() + 60 * 60 * 24 * 7);
                } else{
                    setcookie('remember', null, -1);
                }
            }else{
                setcookie('remember', null, -1);
            }
        }
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    OK.
    A priori, ce que j'ai appelé $_SESSION['id_user'] est en fait : $_SESSION['auth']->id.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Concepteur de systèmes mécaniques
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Concepteur de systèmes mécaniques

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Un grand merci !!!!!!!!!!!!!!!!!!!!!

    Je vais laisser ma tête reposer et tôt reprendre depuis le début, pour bien comprendre !

    Merci encore !

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/03/2016, 15h14
  2. Réponses: 1
    Dernier message: 13/04/2015, 12h17
  3. Réponses: 3
    Dernier message: 13/03/2009, 16h20
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48
  5. Réponses: 4
    Dernier message: 07/08/2006, 18h01

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