私はここで、 "セッション、クロスドメインとssl"に関するすべての関連トピックを読んでみたと思うstackoverflow。残念ながら何も動作しません。PHPセッションが失われる:サブドメインとhttps(非SSLへの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
。
既に言及したように、私はすべてのポストされた解決策を試しました。 参照のためにこれを見てみましょう:Session lost when switching from HTTP to HTTPS in PHP。
でこのスニペットを拡張しようとしましたが、PHP Sessions across sub domainsで説明しましたが、どちらも機能しません。
私はまたini_set('session.cookie_domain', '.domain.com');
を編集しようとした:要求された答えのように、ここでは(本来はここでヤコブにより投稿されました:Session lost when switching from HTTP to HTTPS in PHP)に使用されるコードがある
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
は常に空です。
ヒントはありますか?
バスター、お返事ありがとうございます!私はちょうど要求されたコードを加えました。 – Andrew