PHP SESSION仅适用于HTTPS + PHPSESSID cookie未发送

时间:2014-06-20 14:20:39

标签: php session cookies

我有样本页面 其内容如下:

<?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,但它不会保存它并将其用于页面的下一个请求。

我想知道这个问题的原因和解决方案。

谢谢。

1 个答案:

答案 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();