簡體   English   中英

PHP SESSION僅通過HTTPS起作用+ PHPSESSID cookie不發送

[英]PHP SESSION works only over HTTPS + PHPSESSID cookie is not sent

我有示例頁面的內容是下面的代碼:

<?php 
session_start();
if (isset($_SESSION['test'])){
    echo 'Session variable is set ';
    echo $_SESSION['test'];
}else{
    echo 'Session variable is not set';
    $_SESSION['test'] = 'test';
}

當我通過HTTPS訪問該頁面時(例如: https ://www.example.com/page.php),它運行良好,第一次設置$ _SESSION變量,然后正常檢索它。

但是,當我通過普通的HTTP訪問頁面時,每次得到“未設置會話變量”。 當我在兩種情況下都檢查了請求/響應cookie時,我發現使用HTTPS時,將從頁面的第一個請求中檢索PHPSESSID cookie,而從同一PHPSESSID上的第二個請求中檢索PHPSESSID cookie作為請求cookie。 但是,每次我加載頁面時,通過普通HTTP加載時,它都不會發送任何cookie,它會獲得不同的PHPSESSID cookie,但不會保存它並將其用於頁面的下一個請求。

我想知道此問題的原因和解決方案。

謝謝。

可以將會話Cookie設置為僅安全

嘗試使用session_set_cookie_params僅禁用安全會話cookie

$oldparams = session_get_cookie_params();
session_set_cookie_params($oldparams["lifetime"], $oldparams["path"], $oldparams["domain"], false, true);
session_start();

暫無
暫無

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

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