我有样本页面 其内容如下:
<?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访问页面时,每次我都得到“Session变量未设置”。 当我在两种情况下检查请求/响应cookie时,我发现当使用HTTPS时,从页面的第一个请求中检索PHPSESSID cookie,并从同一PHPSESSID上的第二个请求作为请求cookie发送。 但是,每次加载页面时都会超过正常的HTTP,它会在不发送任何cookie的情况下加载,它会获得不同的PHPSESSID cookie,但它不会保存它并将其用于页面的下一个请求。
我想知道这个问题的原因和解决方案。
谢谢。
答案 0 :(得分:0)
会话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();