stackoverflow の「セッション、クロスドメイン、ssl」に関するすべての関連トピックを読んで試したと思います。残念ながら、何も機能しません。
私の場合:
loginForm.html (非 SSL) -> authUser.php (SSL) -> showAccount.php (非 SSL)
問題は、これらのファイルが異なるサブドメインに配置され、SSL または非 SSL によって提供されることです。
loginForm.html -> http://dev.domain.com
authUser.php -> https://ssl.domain.com
showAccount.php -> http://dev.domain.com
ユーザー資格情報が正しい場合、authUser.php
は で使用されるセッションを作成する必要がありますshowAccount.php
。
すでに述べたように、投稿されたすべてのソリューションを試しました。参考までに、これを見てみましょう: PHP で HTTP から HTTPS に切り替えるときにセッションが失われました。サブドメイン全体の PHP セッション で述べたように、
このスニペットを拡張しようとしましたが、どちらも機能しません。
私も試しましたsession_set_cookie_params
ini_set('session.cookie_domain', '.domain.com');
編集:要求された回答のように、使用されたコードは次のとおりです(Jacobが最初に投稿したもの:PHPでHTTPからHTTPSに切り替えるときにセッションが失われました)
https://ssl.domain.com/user/authUser.php
<?php
// auth with database was successful, so create the session
session_set_cookie_params(0, '/', '.domain.com');
session_start();
$currentSessionID = session_id();
$_SESSION['testvariable'] = 'It worked';
$InsecureServerDomain = 'dev.domain.com';
$pagePath = '/showAccount.php';
echo '<a href="http://' . $InsecureServerDomain . $pagePath . '?session=' . $currentSessionID . '">Transfer Cookie from secure to insecure </a>';
?>
http://dev.domain.com/showAccount.php
<?php
$currentSessionID = filter_input(GET, "session");
session_set_cookie_params(0, '/', '.domain.com');
session_id($currentSessionID);
session_start();
if (!empty($_SESSION['testvariable'])) {
echo $_SESSION['testvariable'];
} else {
echo 'It did not work.';
}
?>
は$_SESSION
常に空です。
ヒントはありますか?