我的问题是,当调用包含开关控件的静态方法时,不会存储$ _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;
....
有谁知道可能是什么问题?谢谢!
答案 0 :(得分:2)
您必须使用session_start()
命令启动会话。
cf:http://php.net/manual/en/function.session-start.php
注意:session_start()应该在脚本中尽早发生。一旦打印出来,它将不再有效。
答案 1 :(得分:0)
在案例1中,您已分配$_SESSION['step1'] = 'test';
,因此它会打印测试。而在案例2中,没有任何内容。