2012-01-02 6 views
0

내 문제는 스위치 컨트롤을 포함하는 정적 메서드를 호출 할 때 $ _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; 

      .... 

누구에게 무슨 문제가 있는지 알고 있습니까? 고맙습니다!

+1

정확히 무엇이 발생합니까? 과제가있는 회선에 대해서도 1000 % 확신하고 있습니까? –

+1

이 정적 함수를 호출하기 전에 브라우저에 출력을 보내지 않습니까? 다른 출력을 보내기 전에'session_start()'를 호출해야하기 때문에 묻는 것 ... 로깅을 켜고 로그를 확인하면이 경우인지를 알 수 있습니다 ("헤더가 이미 전송되었습니다"라는 오류 메시지가 나타납니다). – wimvds

답변

2

session_start() 명령을 사용하여 세션을 시작해야합니다.

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

참고 :으로 session_start() 가능한 한 빨리 스크립트에서 발생한다. 무언가가 인쇄 되 자마자 더 이상 작동하지 않습니다.

+0

감사합니다! 그거였다! 이전에 코드를 시작하여 일했습니다. 넌 나를 구했다! :) – Vika

+0

@Vika 당신은 환영합니다 :) – TimWolla

0

경우 1에서 $_SESSION['step1'] = 'test';을 지정하여 테스트를 인쇄합니다. 반면에 2의 경우 아무 것도 할당되지 않습니다.

+0

하지만 마지막 단계에서 'test'를 인쇄해서는 안됩니까? 세션 데이터가 남아 있어야하기 때문입니다. 나중에 액세스하려면 1 단계에서 할당 한 데이터를 저장할 수 있어야합니다. – Vika

+0

PHP 코드 맨 위에서 session_start()를 움직여 보셨습니까? –

+0

그게 다야! 고맙습니다!! – Vika

관련 문제