会话不存储变量

时间:2012-01-02 13:47:33

标签: php session

我的问题是,当调用包含开关控件的静态方法时,不会存储$ _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;

           ....

有谁知道可能是什么问题?谢谢!

2 个答案:

答案 0 :(得分:2)

您必须使用session_start()命令启动会话。

cf:http://php.net/manual/en/function.session-start.php

注意:session_start()应该在脚本中尽早发生。一旦打印出来,它将不再有效。

答案 1 :(得分:0)

在案例1中,您已分配$_SESSION['step1'] = 'test';,因此它会打印测试。而在案例2中,没有任何内容。