2009-05-29 6 views
1

J'ai beaucoup de fichiers avec multple comprend une dans l'autre comme ci-dessous,Comment travailler avec l'instruction Session and Include en PHP?

File1 est inclus dans File2 puis File2 est sous File3

Maintenant, je veux déclarer une variable de session site_user_conutry de Fichier1 puis je suis vérifiant sur File2 que s'il n'y a aucune valeur dans la variable de session alors seulement J'inclue File1.php

J'ai ajouté session_start(); dans chaque [âge mais toujours son travail?

S'il vous plaît dites-moi comment puis-je faire fonctionner la session dans les conditions ci-dessus.

Répondre

1

Comment êtes-vous le réglage de la variable de session? Vous devriez essayer de définir comme si:

$_SESSION['site_user_conutry'] = 'United-Kingdom'; 

Avez-vous placé session_start() au sommet du document, ou au moins avant la sortie des informations?

+0

Oui, je déclare la session comme vous l'avez démontré. et aussi j'ajoute session_start() en haut de chaque page. – Prashant

+0

Qu'est-ce que vous obtenez si vous var_dump ($ _ SESSION)? Completement vide? – xenon

2

Dans Fichier2

if ($_SESSION["site_user_country"] != null) 
{ 
    include_once(File3); 
} 
1

En supposant que vous incluez les fichiers qui ont l'exécution de code, pas les fonctions.

Le code qui inclut File1 et définit les variables de session doit être exécuté avant le code sur File2 lors de la première itération.

Dans les prochaines itérations, la session contiendra les valeurs pour vous.

Pour définir une variable de session, utilisez le tableau global $ _SESSION.


$_SESSION["name"] = "value"; 
2

Ne démarrez session_start dans les premières lignes de code qu'une seule fois.

La documentation dit: A partir de la version 4.4.3, appeler session_start() alors que la session a déjà été démarrée entraînera une erreur de niveau E_NOTICE. En outre, le début de la deuxième session sera simplement être ignoré.

Si fichier1 est inclus dans le fichier2, le code de fichier2 est effectué avant le fichier1. Donc, si vous déclarez quelque chose dans le fichier 1 ne peut pas être vu dans le fichier 2 (dépend du code ...), de toute façon ce n'est pas la façon moderne de programmer PHP. (voir oo et __autoload)