簡體   English   中英

PHP session_start cookie不保存會話ID

[英]PHP session_start cookie doesn't save session id

在我的服務器上,我通過調用靜態類函數開始新的會話。 問題在於,會話ID未保存在會話Cookie中,此外,似乎客戶端未保存任何會話Cookie(例如,chrome不顯示該網站的Cookie)。 打印$_COOKIE得到array(0) { } $_SESSION相同。

這是啟動新會話的靜態類函數:

<?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

確保您的網站支持https

session.cookie_secure指定是否僅應通過安全連接發送cookie。

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

如果不是,只需將$secure設置為false

希望這會有所幫助。

在執行任何會話功能之前,必須先將session_start作為第一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM