Похоже, я до сих пор не понимаю сессий.
Данные сеанса просто не будут доступны для включенных файлов или сохранятся при перезагрузке страницы.
У меня есть следующий код:
page1.php
<?php
/*
Template Name: Some template
*/
session_start();
$_SESSION['start'] = 'start';
print_r($_SESSION);
if(some condition)
include('include1.php');
else
include('include2.php');
?>
include1.php
<?php
/* Some comments here */
$_SESSION['test'] = 'Test text';
print_r($_SESSION);
?>
include2.php
<?php
/* Some comments here */
print_r($_SESSION);
?>
Page1 сначала включает include1.php
, где я делаю кое-что. Затем я загружаю страницу 1, включая include2.php
.
Результат вывода print_r()
:
Array ( [start] => start ) // From page 1
Array ( [start] => start [test] => Test text ) // From include 1
Array ( [start] => start ) // From include 2
Мой вопрос:
1) Почему [include]
не выводится в page1.php в первый print_r()
после перезагрузки?
2) Почему '[include]
не выводится в include2.php?
Я только добавляю session_start()
на странице 1, так как включены два других файла. Я также попытался добавить session_start()
в оба включаемых файла, но это тоже не работает, поскольку создает новые экземпляры.
UPDATE
Мой "actall" включает код:
switch($action) {
case 'a': include_once('include/include1.php'); break;
case 'b': include_once('include/include2.php'); break;
//default:
}
print_r($_SESSION); // <- Here all registered session variables are outputed