0

我有一个关于从 http-> https 进行会话传输的问题。我遵循了在较早的问题中作为答案发布的步骤。

HTTP 页面:

<?php
session_save_path('/home/test/sess_store');
session_start();
$sessionID = session_id();

$_SESSION['test'] = 'Demo session between HTTP HTTPS';
echo '<a href="https://www.mysite.com/test_sess_2.php?session='.$sessionID.'">Demo session from HTTP to HTTPS</a>';

?>

HTTPS 页面:

<?php
session_save_path('/home/test/sess_store');
$sessionID = $_GET['session'];
session_id($sessionID);
session_start();

if (!empty($_SESSION['test'])) {
echo $_SESSION['test'];
} else {
echo 'Demo session failed';
}

?>

但是它不起作用..即使我在 https 页面上的会话 id 与 http 上的会话 id 相同。

我还单独检查了这些页面,并将两个会话存储在同一路径中。当我在 https 页面上设置 session_id 时,我仍然无法访问会话值。

4

1 回答 1

0

你确定它$_SESSION['test']真的保存在 HTTP 中吗?尝试将该检查块放在 HTTP 页面的开头并刷新它:

if (!empty($_SESSION['test'])) {
    echo $_SESSION['test'];
} else {
    echo 'Demo session failed';
}

如果它不能正常工作,这意味着“测试”根本没有保存,即使在 HTTP 本身 - 检查你的 PHP 配置文件,因为你可能有,例如,session.use_only_cookies=1价值,它不会工作认为 GET 根本.

让我知道它是否真的有效并仅在 HTTP 中保存价值,如果有效,我会尝试找到让它在 HTTPS 中工作的方法。

如果您正在使用suhosin补丁,请检查它的配置,尤其是suhosin.session.cryptdocroot值 - 尝试将其设置为“关闭”它是“打开”。

于 2013-08-23T10:26:09.090 回答