[英]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.