所以我有一个PHP函数,用于设置会话变量,如下所示:
function createSVar($varext) {
[...]
$_SESSION['v'.$varext) = time(); // hypothetical value set
[...]
return $output;
}
调用它的函数:
function someFunction1() {
[...]
$output = createSVar("name1");
[...]
return $output;
}
function someFunction2() {
[...]
$output = createSVar("name2");
[...]
return $output;
}
这些功能包含在功能文件中。然后我有一个配置文件设置如下:
<?
ob_start();
session_name("mysession");
session_start();
[...]
include("functions.php");
然后在我的PHP页面上使用如下:
<?
include("config.php");
[...]
echo someFunction2();
[...]
echo someFunction1();
我的问题是这个设置在PHP 5.2.17的两台不同机器上运行良好。在PHP 5.3.0的第三个,它没有。出于某种原因,它会在createSVar()
函数的每次调用中更改先前的会话值(对于先前设置的会话变量)。我检查了更改日志,但没有看到任何更新。
这可能是个错误吗?
答案 0 :(得分:0)
我的第一个倾向是在session_start()之后调用ob_start()。 Session_start()需要发送可能被ob_start()调用缓冲的HTTP头。