我的問題是,當調用一個包含開關控件的靜態方法時,$ _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