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