Как работать с оператором Session and Include в PHP? - PullRequest
1 голос
/ 30 мая 2009

У меня много файлов с несколькими включениями один в другой, как показано ниже,

File1 включается в File2, а затем File2 ниже File3

Теперь я хочу объявить переменную сеанса site_user_conutry из File1, а затем проверяю File2, что если в переменной сеанса нет никакого значения, то только я включаю File1.php

Я добавил session_start(); в каждый [возраст, но все еще не работает ??

Скажите, пожалуйста, как я могу заставить сеанс работать в вышеуказанном состоянии.

Ответы [ 4 ]

2 голосов
/ 30 мая 2009

Сделать session_start в первых строках кода только один раз.

Документация гласит: Начиная с версии 4.4.3, вызов session_start (), когда сессия уже запущена, приведет к ошибке уровня E_NOTICE. Кроме того, начало второго сеанса будет просто игнорироваться .

Если файл1 включен в файл2, то код из файла2 выполняется перед файлом1. Таким образом, если вы объявляете что-то в file1, его нельзя увидеть в file2 (зависит от кода ...), в любом случае это не современный способ программирования PHP. (см. oo и __autoload)

2 голосов
/ 30 мая 2009

в файле2

if ($_SESSION["site_user_country"] != null) 
{
    include_once(File3);
}
1 голос
/ 30 мая 2009

Предполагается, что вы включаете файлы, в которых выполняется код, а не функции.

Код, который включает в себя File1 и устанавливает переменные сеанса, должен выполняться перед кодом в File2 на первой итерации.

В следующих итерациях сессия будет содержать значения для вас.

Чтобы установить переменную сеанса, используйте глобальный массив $ _SESSION.


$_SESSION["name"] = "value";
1 голос
/ 30 мая 2009

Как вы устанавливаете переменную сеанса? Попробуйте установить его так:

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

Поместили ли вы session_start () в самый верх документа или, по крайней мере, перед тем, как выводить какую-либо информацию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...