Problème avec $_SESSION

jojolebarge Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je développe actuellement une application web et je voudrais que le nom et le prénom des utilisateurs qui se connectent apparaissent dans la page index. il me semble qu'il faut commencer par un session_start() et stocké les informations dans une variable lors de la connexion avec un $_SESSION, j'ai essayer de bidouiller quelque chose avec ses éléments là mais on me renvoie une erreur avec Undefined variable: _SESSION

voila pouvez vous m'indiquer une solution



merci d'avance pour votre aide

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Difficile de voir le problème sans connaitre ton code.

Le message d'erreur indique que la variable n'existe pas, donc soit :
- la variable n'a jamais été définie
- la session n'a pas été initialisé avec session_start()
- une faute de frappe sur le nom de la variable
- autre...

Peux tu nous montrer ton code ?

Bonne journée,
0
jojolebarge Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Oui bien sur voici mon code:

le code de la page login.php
<?php
 
 
function demarrerSession(){
        if(session_status() == PHP_SESSION_NONE){
            session_name('gsbacrsessid');
            session_start();
        }
    }
 
function estConnecte(){
        demarrerSession();
        return isset($_SESSION['utilisateur']);
    }
function recupererInfosUtil($id){
        require 'include/bdd.php';
        $req = $pdo->prepare('SELECT * FROM Visiteur where id = :id');
        $req->execute(array(':id' => $id));
        $login = $req->fetch();
        $_SESSION['infos']['id'] = $login->id;
        $_SESSION['infos']['nom'] = $login->nom;
        $_SESSION['infos']['prenom'] = $login->prenom;
        $_SESSION['infos']['adresse'] = $login->adresse;
        $_SESSION['infos']['cp'] = $login->cp;
        $_SESSION['infos']['ville'] = $login->ville;
        $_SESSION['infos']['embauche'] = $login->dateEmbauche;
        $_SESSION['infos']['statut'] = $statut;
    }
 
 
 
 
 
if(isset($_POST['submit'])){
        if(!empty($_POST['username']) && !empty($_POST['password'])){
            require'include/bdd.php';
            $req = $pdo-> prepare('SELECT * FROM Visiteur where login = :login AND mdp = PASSWORD(:mdp)');
            $req->execute(array(':login' => $_POST['username'], ':mdp' => $_POST['password']));
           if($user = $req->fetch()){
                session_name('gsbacrsessid');
                $_SESSION['utilisateur'] = $user->id;
                 
                demarrerSession();
                header('Location: index.php');
                exit();
        } else {
            echo 'Erreur, identifiant et/ou mot de passe incorrecte.';
        }
    }
    }
 
?>
 
 
 
<!DOCTYPE html>
<html >
  <head>
    <meta charset="UTF-8">
    <title>login</title>
 
        <link rel="stylesheet" href="css/login.css">
     
  </head>
 
  <body>
 
    <div class="login">
  <div class="heading">
     
                <h1>Connexion à l'application Appli-Frais</h1><br>
                <h4>Veuillez renseigner votre identifiant et mot de passe.</h4><br>
    <form action="" method="post">
 
      <div class="input-group input-group-lg">
        <span class="input-group-addon"><i class="fa fa-user" style="color:grey"></i></span>
        <input name="username" type="text" class="form-control" placeholder="identifiant">
          </div>
 
        <div class="input-group input-group-lg">
          <span class="input-group-addon"><i class="fa fa-lock" style="color:grey"></i></span>
          <input name="password" ="" type="password" class="form-control" placeholder="Mot de passe">
        </div>
 
        <button type="submit" name="submit" class="float">Connexion</button>
       </form>
        </div>
 </div>
     
     
     
     
  </body>
</html>



le code la page index.php

<?php
 
function demarrerSession(){
        if(session_status() == PHP_SESSION_NONE){
            session_name('gsbacrsessid');
            session_start();
        }
    }
 
include 'include/header.php';
function recupererInfosUtil($id){
        require 'include/bdd.php';
        $req = $pdo->prepare('SELECT * FROM Visiteur where id = :id');
        $req->execute(array(':id' => $id));
        $login = $req->fetch();
        $_SESSION['infos']['id'] = $login->id;
        $_SESSION['infos']['nom'] = $login->nom;
        $_SESSION['infos']['prenom'] = $login->prenom;
        $_SESSION['infos']['adresse'] = $login->adresse;
        $_SESSION['infos']['cp'] = $login->cp;
        $_SESSION['infos']['ville'] = $login->ville;
        $_SESSION['infos']['embauche'] = $login->dateEmbauche;
        $_SESSION['infos']['statut'] = $statut;
    }
 
 
 
?>
 
 
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">
    <title>Accueil</title>
</head>
<body>
 
<div class="content">
<h1>Bonjour et bienvenu surl'interface de saisie des fiches de frais</h1>
 
   </div>
 
   <?php echo "bienvenu";?><?= $_SESSION['infos']['prenom']?>
   </body>
</html>

merci d'avance
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Si le message d'erreur vient bien de l'affichage du prénom dans la page index.php, il faut activer la session en appelant session_start (dans ton cas en appelant la fonction demarrerSession) et vérifier que la variable existe :
<?php 
demarrerSession();

if (isset($_SESSION['infos']['prenom'])) {
    echo "bienvenu" . $_SESSION['infos']['prenom'];
} else {
    echo 'pas connecté';
}
?>
0
jojolebarge Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   > Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention  
 
salut,
j'ai testé ton code mais ça ne fonctionne toujours pas
j'ai cette erreur ci:
Fatal error: Call to undefined function demarrerSession()
0
jojolebarge Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai de nouveau modifier le code et cette fois il m'affiche l'erreur suivante:

Parse error: syntax error, unexpected 'if' (T_IF), expecting
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Le dernier message d'erreur indique que tu as une erreur de syntaxe.

Regarde la ligne indiqué dans le message d'erreur si tu n'aurais pas oublié un ; à la fin de la ligne précédente.
0