1

所以我有一个 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()出于某种原因,它会在每次调用函数时更改先前的会话值(对于先前设置的会话变量) 。我检查了更新日志,没有看到任何更新。

这可能是一个错误吗?

4

1 回答 1

0

我的第一个倾向是在 session_start() 之后调用 ob_start()。Session_start() 需要发送可能被 ob_start() 调用缓冲的 HTTP 标头。

于 2013-02-05T03:41:29.293 回答