variable de session $_SESSION


dadovb
WRInaute passionné
WRInaute passionné
 
Messages: 2050
Inscription: 22 Nov 2005

variable de session $_SESSION

Message le Lun Jan 09, 2006 14:26

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

Code: Tout sélectionner
$_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: Tout sélectionner
$lg = $_SESSION["lang"];
echo $lg;


Et là ca ne marche pas, pourriez-vous m'expliquez ce que j'ai mal fait ? merci d'avance !


fabor
WRInaute discret
WRInaute discret
 
Messages: 152
Inscription: 17 Mar 2005

Message le Lun Jan 09, 2006 14:37

as tu mis un
Code: Tout sélectionner
session_start()
en debut de ta page?

Didier_S
WRInaute impliqué
WRInaute impliqué
 
Messages: 567
Inscription: 24 Aoû 2004

Message le Lun Jan 09, 2006 14:38

1- essaie de soigner ton orthographe, merci
2- tu utilises session_start() avant d'envoyer des variables en session ?


dadovb
WRInaute passionné
WRInaute passionné
 
Messages: 2050
Inscription: 22 Nov 2005

Message le Lun Jan 09, 2006 15:03

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


dadovb
WRInaute passionné
WRInaute passionné
 
Messages: 2050
Inscription: 22 Nov 2005

Message le Lun Jan 09, 2006 15:04

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.

Didier_S
WRInaute impliqué
WRInaute impliqué
 
Messages: 567
Inscription: 24 Aoû 2004

Message le Lun Jan 09, 2006 15:19

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: Tout sélectionner
if (!isset($_SESSION)) { session_start(); }]


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Lun Jan 09, 2006 15:59

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()

Toutou-Fr
WRInaute impliqué
WRInaute impliqué
 
Messages: 642
Inscription: 22 Aoû 2005

Message le Lun Jan 09, 2006 16:03

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.


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Lun Jan 09, 2006 16:41

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...)

Toutou-Fr
WRInaute impliqué
WRInaute impliqué
 
Messages: 642
Inscription: 22 Aoû 2005

Message le Lun Jan 09, 2006 16:47

code HTML, ou headers:)

( on peut generer un cookie avant ? je ne savais pas)


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Lun Jan 09, 2006 17:07

hum, le doute m'envahi. je vais tester ça ^^


dadovb
WRInaute passionné
WRInaute passionné
 
Messages: 2050
Inscription: 22 Nov 2005

Message le Lun Jan 09, 2006 17:08

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: Tout sélectionner
$lg = $_GET['pouet'];

require "session.php";



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


Code: Tout sélectionner
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

Toutou-Fr
WRInaute impliqué
WRInaute impliqué
 
Messages: 642
Inscription: 22 Aoû 2005

Message le Lun Jan 09, 2006 17:11

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 .


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Lun Jan 09, 2006 17:16

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


dadovb
WRInaute passionné
WRInaute passionné
 
Messages: 2050
Inscription: 22 Nov 2005

Message le Lun Jan 09, 2006 17:16

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^^

variable de session $_SESSION

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités