[RESOLU] La variable $_SESSION ne se propage pas...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] La variable $_SESSION ne se propage pas...

Re: La variable $_SESSION ne se propage pas...

par @rthur » 09 mai 2019, 13:41

Ca me parait carrément dingue comme type d'erreur, mais bon... sans compter le nombre d'heures perdues :evil:
Ce type d'erreur dans ton code renvoie un message d'erreur assez explicite qui doit s'afficher dans les logs (le message est "Headers already sent by" ou un truc du genre).

Quand tu développes pour éviter de perdre des heures de recherche sur ce genre de petites bétises il faut toujours vérifier dans les logs. :D

Re: La variable $_SESSION ne se propage pas...

par Delphinette » 09 mai 2019, 10:53

Arf, j'ai trouvé la solution dans un autre post (merci Spols) :
...
la 2émé solution est plus simple à expliquer.
en tout début des 2 fichiers avant la moindre ligne d'html (même pas un retour à la ligne)
ajouter
<?php session_start();?>
...
Session_start() était bien la première instruction mais dans un de mes fichiers php, il y avait un saut de ligne avant la ligne :shock:
Ca me parait carrément dingue comme type d'erreur, mais bon... sans compter le nombre d'heures perdues :evil:

Quoi qu'il en soit, merci de votre aide indirecte :roll:

La variable $_SESSION ne se propage pas...

par Delphinette » 08 mai 2019, 22:06

Bonjour,
Je débute aujourd'hui en PHP (PHP 7.3)
J'ai besoin de véhiculer une variable (le rôle de l'utilisateur connecté) de pages en pages.
Dans ma première page, l'utilisateur se connecte. Ma toute première ligne est bien
<?php session_start(); ?>
La connexion l'amène sur une autre page avec cette même première instruction (session_start)
Je récupère son rôle via une requête SQL et je le stocke :
$_SESSION['NomRole'] = $ligne['NOM_ROLE'];
Tant que je reste sur cette page, tout se passe bien et je peux utiliser la variable $_SESSION['NomRole'] sans souci.
Par contre, dès que je passe sur la page suivante, malgré le session_start() en première ligne,
tout indique que $_SESSION est complètement vide. Pourtant je ne fait que cliquer sur un lien tout simple :
<li><a href=consultation.php>Consulter</a></li>
qui mène vers une page ultra simpliste :
<?php session_start(); ?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<?php
echo '<p> nom role = '.$_SESSION['NomRole'] . '</p>';
?>
</body>
</html>
Et voici le résultat alors que je suis bien connectée et que sur la page précédente mon rôle était clairement connu :
nom role =
Voilà, quand je lis les anciens posts à ce sujet, ça a l'air tellement évident et facile que je ne comprends pas pourquoi ça ne fonctionne pas chez moi.
Et j'ai fait des dizaines de tests, j'y suis depuis le milieu d'après midi... sans succès, quelles que soient les pages !
Idem quand j'interroge session_id(). Et visiblement mon PHP ne connait pas SID.

Comme j'ai besoin de connaitre les droits de l'utilisateur pour lui afficher les bons menus (sorte de back office), comment puis je faire pour transférer cette information de pages en pages ?

(je ne me penche pas sur les cookies car je ne sais pas si les utilisateurs finaux vont les accepter ou pas).

Merci pour votre aide
Bonne soirée