variable de session $_SESSION

WRInaute passionné
Bonjour à tous, je souhaite utiliser une variable de session PHP, donc voilà ce que j'ai mis ds ma page d'accueil :

Code:
$_SESSION["pouet"]	= $pouet;
$po = $_SESSION["pouet"];

Ken je fai echo $po sur ma page d'accueil ca amrche bien. Mais j'ai essayé de la récupérer sur une autre page de mon site :
Code:
$lg = $_SESSION["lang"];
echo $lg;

Et là ca ne marche pas, pourriez-vous m'expliquez ce que j'ai mal fait ? merci d'avance !
 
WRInaute occasionnel
1- essaie de soigner ton orthographe, merci
2- tu utilises session_start() avant d'envoyer des variables en session ?
 
WRInaute passionné
no effetcivement, je l'avais pas mis.

Par contre j'en ais un ds un fichier php que j'appelle avec un require un peu plus loin ds mon code, est-ce un problème si je déclare 2 session_start à la suite ?

Ecrasement des variables et compagnie ? merci d'avance
 
WRInaute passionné
pardon pour les fautes de frappes mais je sui handicapé moteur donc jessai de diminuer le nombre de frappes sur les touches d emon clavier.Merci de votre compréhension.
 
WRInaute occasionnel
pas de problème, dans ce cas tu te débrouilles même carrément bien !
les 2 session_start() à la suite vont poser problème (générer un Warning, ou une Notice, je ne sais plus)

tu peux, autour du 2e, mettre un
Code:
if (!isset($_SESSION)) { session_start(); }]
 
WRInaute accro
Bonjour,

le session_start() doit être dans ta page qui inclue l'autre (la page parent) et avant toute balise html

pas besoin de le repeter dans la page incluse
sinon pour ton problème, cela doit être effectivement l'absence de ton session_start()
 
WRInaute occasionnel
Si ma mémoire est bonne, de toute facon, le session_start doit obligatoirement être la première fonction utilisée en sortie, sans quoi il y a un e erreur (header already sent..)

On peut faire des tests avant, affecter des variables etc avant, mais pas de echo, print, ou quoi que ce soit dans le genre :p il est donc préférable de prendre l'habitude d'utiliser session_start au tout début du fichier php.
 
WRInaute accro
fonction de sortie = code html :)
tu peux faire autant de traitements que tu veux avant un session_start() tant qu'il n'y a pas d'affichage en sortie (tu peux faire des requetes de modif BDD, génération de cookie, etc...)
 
WRInaute passionné
Tout d'abord merci à tous pour vos nombreux conseils,

Je n'arrive toujours pas à ce que je veux, dans ma page public/index.php, je recupère de l'url la variable ?pouet=kkchose.

Je fais donc un :
Code:
$lg = $_GET['pouet'];

require "session.php";

Mon fichier session.php contient mes (futures) déclartions de variables de session :


Code:
session_start();
	
	session_register("_pouet");
	if (isset($lg)) {
		$pouet = $lg;
		$_SESSION["_pouet"]	= $pouet;
		}

Après plusieurs tests, ma page d'accueil la prends bien encompte, mais pas mes pages "suivantes" placées ds le meme répertoire qui sont lancés pas des href normaux depuis mon index.php.

Je sai pas si je suis très clair jespere que vous comprendez au moins une partie de ce ke j'essaie d'expliquer. Merci d'avance
 
WRInaute occasionnel
toutes tes pages doivent posseder le session_start, meme si ta session est déjà commencée.

pour débugger, je te conseille d'afficher tous les types d'erreurs, warning, notice, etc dans PHP .
 
WRInaute accro
session_register("_pouet"); <- !!! code obsolete
il faut mettre : $_SESSION["_pouet"]=$tavariable

if (isset($lg)) { <- peut etre que tu n'as pas de $lg tout simplement. à distance, dur de trouver sur une portion de code
 
WRInaute passionné
je fais un require "session.php" au debut de chacune de mes pages. J'ai vraiment l'impression que le probleme se situe au niveau du passage de variables entre les différentes pages php.
Mais j'en mettrais pas ma main à couper...elle me sert encore un peu^^
 
WRInaute passionné
ok j'enleve le session_register, par contre je sui pas en php 5 mais à la version d'avant 4.3.kkchose me semble.

Ken à $lg je le recupere en get juste avant de require session.php où je fait le test
 
WRInaute accro
les variables de session ne se passent pas entre les différentes pages, donc peut-etre que c est ton $lg, on n'a pas tout ton code source sous les yeux !

il faut débugguer ton code avec des echo $tavariable un peu partout pour voir quelles variables sont absentes
 
WRInaute passionné
ahhh...

Je pensais justement que l'intéret des variables de session étaient de faire passer des parametres entre les pages ke parcourent l'internaute sans avoir à faire de post et de get, ce n'est pas la solution qui me convient alors. Je veu un endroit où stocker une valeur de la connexion à la déconnexion d'un visiteur.
 
WRInaute occasionnel
oui oui c'est bien ca l'interet des sessions.


voila ton probleme :

tu inclus tjrs la page session.
or, a chaque fois, la page session réaffecte ta variable,
donc meme si elle lui donne la bonne valeur dans la premiere page, elle la remet à zero dans la page d'apres.

ce que tu dois faire c'est :

1 premiere page :
session_start();
$_SESSION['tavariable']= $lg;


2eme page :
session_start();
echo $_SESSION['tavariable'];

c'est tout.
 
WRInaute passionné
ok la ca a l'air de marcher, sur ma page quie recup le get, j'ai mis :
Code:
$lg = $_GET['langue'];
require "session.php";

ds session .php :
Code:
session_start();
	
		if (isset($lg)) {
		$langue = $lg;
		$_SESSION["_langue"]	= $langue;
		}

Et après ds chaque fichier ou j'ai besoin de ma variable :
Code:
include "session.php";
$lang = $_SESSION["_langue"];
echo $lang;

Voilà, au cas où ca sert à kkun d'autre. En tout cas merci à vous tous pour votre patience et vos consils avisés. A biento sur WRI.
 
WRInaute occasionnel
félicitations ;-)


par contre, juste pour info, mais cela n'a aucune gravité, l'étape :

$langue = $lg;
$_SESSION["_langue"] = $langue;

est inutile,
tu pourrais mettre directement
$_SESSION["_langue"] = $lg;
 
Discussions similaires
Haut