8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je travaille actuellement sur un site et j'ai besoin de créer des sessions pour stocker facilement diverses infos (notamment le pseudo de l'utilisateur, la date de sa dernière connexion ...).

J'ai essayé d'exploiter la documentation officielle mais elle est peu claire, notamment sur les modifications réalisables.

Du coup, j'utilise ça :

- Dans mon index.php :
$app->register(new Silex\Provider\SessionServiceProvider());


- Dans le controller qui gère l'authentification :

session_start();
$_SESSION['username'] = $pseudo;
$_SESSION['status'] = $data['status'];
$_SESSION['lastConnection'] = $data['lastConnection'];


- Dans le controller qui gère la page d'accueil du compte utilisateur :

return $app['twig']->render('ownpage_root.twig', [
'pseudo' => $pseudo,
'session' => $_SESSION
]);


Mon problème est qu'une fois que je change de page, j'obtiens une erreur :
Variable "session" does not exist.

D'où vient le problème ?
Est-ce que je dois déclarer 'session' => $_SESSION dans chaque controller qui gère les pages utilisateur ?
Est-ce que je dois faire une manip pour que $_SESSION soit accessible dans toutes les pages ?

Sur un forum, un utilisateur suggère ça :

Si tu utilise twig sans symfony quand tu crée ton environnement twig
	
$session = new Session();
$session->start();
$twig->addGlobal('session', $session);

Et après dans tes pages twig ta variables sera session 

Mais ce code est à mettre où ? Dans le controller une fois qu'on a vérifié que le mot de passe est le bon ?

Merci d'avance pour votre aide.
Modifié par AlexP (31 Dec 2017 - 17:43)
Quant à la récupération, dans mon layout j'ai mis ce code :

{% if session is not empty %}
<p>{{ session.username }} est connecté.</p>
{% else %}
<!-- code d'affichage de mes boutons de connexion et d'inscription -->
{% endif %}


A la connexion, je suis redirigé sur une page où j'ai bien " Smiley username est connecté" mais dès que je change de page, ma variable session est vide.
Modifié par AlexP (31 Dec 2017 - 19:07)