2016-12-16 34 views
1

當標題讀取時,我無法讓我的會話變量在路由上保持不變。Slim 3會話變量在路由上不持久

我在我的index.php的非常開始處撥打session_start()

根路線:

$app->get('/', function (Request $request, Response $response) { 
    $this->logger->addInfo("session id: " . $_SESSION['cus_id']); 

    $response = $this->view->render($response, "homepage.phtml", [ 
     'test' => 'testing something', 
     'logged_in' => isset($_SESSION['cus_id']) 
    ]); 

    return $response; 
}); 
在我 app.log

我看到會話變量是不存在的。

但是,這是一個成功登錄後,我的代碼:(崗位/登錄)

if ($customer !== false && password_verify($password, $customer['password'])) { 
     $_SESSION['cus_id'] = $customer['id']; 

     return $this->view->render($response, "homepage.phtml", [ 'logged_in' => true]); 
    } 

我也用這裏的記錄器用於測試目的,它向我表明它保存正確的ID。

我也用完全相同的結果使用各種額外的庫。 我也檢查了官方文檔,無濟於事。

問: 如何獲取會話變量在整個路線是執着? 或者是保存會話的另一種方式?和或另一種方式來解決這個登錄問題?

+1

爲了澄清,在成功登錄調用'$ app-> post('/ login')'路由之後,您可以*渲染主頁模板,但實際上不會*重定向到主路線。這意味着直到另一個稍後的請求才會調用您的主路線。 – Wolf

回答

0

升級導致php.ini文件中的新服務器設置的服務器後,我遇到了同樣的問題。 對我來說,session.auto_start = 1在php.ini中有所斬獲。