我的问题是,当调用一个包含开关控件的静态方法时,$ _SESSION变量未被存储。这里是我的代码:没有存储变量的会话
class Booking {
static public function bookCourse() {
$smarty = SmartySingleton::getInstance();
session_start();
if (isset($_POST['step'])) {
switch ($_POST['step']) {
//step 1 post
case 1:
//validate
$errors = $validator->validateStep1();
if ($errors == ""){
$_SESSION['step1'] = 'test';
var_dump($_SESSION); //here it prints test
$smarty->display('step2.tpl');
}else{
$smarty->assign('errors', $errors);
$smarty->display('step1.tpl');
}
break;
//step 2 post
case 2:
$errors = $validator->validateStep2();
if ($errors == ""){
var_dump($_SESSION); //here it prints empty array
$_SESSION['step2'] = $_POST;
$smarty->display('step3.tpl');
}else{
$smarty->assign('errors', $errors);
$smarty->display('step2.tpl');
}
break;
....
有谁知道可能是什么问题?谢谢!
究竟发生了什么?你是否确定与作业的界限甚至达到了? – 2012-01-02 13:50:02
在调用这个静态函数之前,你确定没有向浏览器发送任何输出吗?只需要询问是因为'session_start()'应该在发送任何其他输出之前被调用......打开日志记录并检查日志可以帮助查看是否属于这种情况(您会得到“头文件已发送”错误消息)。 – wimvds 2012-01-02 13:57:39