【发布时间】:2014-08-11 08:10:18
【问题描述】:
我有示例页面 其内容如下代码:
<?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 上的第二个请求中作为请求 cookie 发送。 但是,每次我加载页面时,通过正常的 HTTP 加载时,它都会在不发送任何 cookie 的情况下加载,它会获取不同的 PHPSESSID cookie,但不会将其保存并用于页面的下一个请求。
我想知道这个问题的原因和解决方法。
谢谢。
【问题讨论】: