2017-11-17 245 views
0

在我的服務器上,我通過調用一個靜態類函數來開始一個新的會話。 問題是會話ID沒有被保存在會話cookie中,此外似乎沒有會話cookie被保存在客戶端(例如,chrome不顯示網站的cookie)。 打印出$_COOKIE結果在array(0) { }。與$_SESSION相同。PHP session_start cookie不會保存會話ID

這裏是靜態類功能,啓動新的會話:

<?php 
class Session 
{ 
    private function __construct() { } 

    public static function sec_session_start() 
    { 
     $session_name = 'sec_session_id'; 
     $secure = TRUE;      // https only 
     $httponly = true;     // javascript can't access session id 

     $cookieParams = session_get_cookie_params(); 
     session_set_cookie_params($cookieParams['lifetime'], 
      '/', 
      'www.example-domain.de', 
      $secure, 
      $httponly); 

     session_name($session_name); 
     session_start();    
     session_regenerate_id();  
    } 
} 
?> 

,並在每個頁面的頂部我與

Session::sec_session_start(); 

例如啓動會話當我在登錄我的網站頁面並打印出var_dump($_COOKIE)它說array(0) { }而不是array(2) { ["PHPSESSID"]=> string(26) "..." ["sec_session_id"]=> string(26) "..." }

的PHP INI如下所示 php ini

回答

-1

你必須要有session_start像以前任何一屆的功能您的第一道防線。