2010-07-03 6 views
0

Je mets une variable de session à l'intérieur d'une fonction studNameDetails1() pendant que j'essaie de la récupérer dans une fonction ViewMark(). Ce sont mes deux fonctions, mais il n'y a aucun résultat:Pourquoi ma variable de session n'est-elle pas définie ici?

function studNameDetails1() 
{ 
    $_SESSION['ATTsub']=$sub_id = $ID[5]; 
} 
function ViewMark() 
{ 
     echo $_SESSION['ATTsub']; 
} 

Quand je fais écho à la valeur viewMark(), il n'y a pas de valeur.

+1

Où est 'session_start()'? –

+0

@Prasoon Saurav: Cela n'a pas d'importance; '$ _SESSION' se comporte comme une variable normale pendant l'exécution. – Gumbo

+0

Les deux fonctions sont-elles appelées dans le cadre de la même requête? –

Répondre

2

C'est la manière de gérer les sessions.

<?php // this starts the session 
session_start(); 

    // echo variable from the session, we set this on our other page 
echo "Our color value is ".$_SESSION['color']; 
echo "Our size value is ".$_SESSION['size']; 
echo "Our shape value is ".$_SESSION['shape']; ?> 

Toutes les valeurs sont stockées dans le tableau $ _SESSION auquel nous accédons ici. Une autre façon de montrer est d'exécuter simplement ce code:

<?php session_start(); Print_r ($_SESSION); ?> 
3

La variable $ID n'a pas été déclaré dans la fonction studNameDetails1, donc lorsque vous essayez d'y accéder, une valeur indéfinie. Cela va définir les variables $_SESSION['ATTsub'] et $sub_id à undefined, et ainsi elles apparaîtront comme étant vides lorsque vous essaierez de les imprimer.

Si ces variables ont été déclarées en dehors du champ d'application de la fonction, utilisez le mot-clé global:

function studNameDetails1() 
{ 
    global $sub_id, $ID; 

    $_SESSION['ATTsub']=$sub_id = $ID[5]; 
} 

http://php.net/manual/en/language.variables.scope.php

+0

+1 Pour ne pas supposer qu'il y a plus de code dans la fonction, comme je l'ai fait. –

Questions connexes