2017-11-17 19 views
0

私のサーバーでは、静的クラス関数を呼び出すことによって新しいセッションを開始しています。 問題は、セッションIDがセッションCookieに保存されていないことです。さらに、セッションCookieがクライアントに保存されていないようです(たとえば、chromeがWebサイトのCookieを表示しないなど)。 $_COOKIEの結果がarray(0) { }に出力されます。 $_SESSIONと同じです。PHP session_startクッキーはセッション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(2) { ["PHPSESSID"]=> string(26) "..." ["sec_session_id"]=> string(26) "..." }の代わりにarray(0) { }と表示されます。

PHP php ini

答えて

-1

を次のようにINIは、あなたがどのセッション機能の前に、あなたの最初の行としてsession_startを持っている必要がしているに見えます。

0

ウェブサイトがhttpsをサポートしていることを確認してください。

session.cookie_secureは、クッキーをセキュリティで保護された接続を介して送信するかどうかを指定します。それは、ちょうど$securefalseに設定されていない場合は

http://php.net/manual/en/session.configuration.php#ini.session.cookie-secure

希望すると、これが役立ちます。

+0

私のウェブサイトは 'https'をサポートしています。 – Syles

関連する問題