プロトコル切り替え中のセッション変数の損失について
同じドメイン内で HTTP から HTTPS に移行すると、ユーザーは頻繁に次の問題に遭遇します。 $_SESSION 変数が失われます。この問題は、HTTP セッション ID が HTTPS セッションに自動的に転送されないために発生します。ただし、セッション ID を手動で設定して、プロトコル間でセッションの継続性を確保する方法がいくつかあります。
解決策: セッション ID を設定する
方法 1: を使用するsession_start()
session_start() は、新しいセッションを作成するか、既存のセッションを再開します。リクエストを通じて送信された現在のセッション ID に基づきます。セッション ID クッキーが設定されていない場合、session_start() は新しいクッキーを作成します。
方法 2: session_id() を使用する
セッション ID が設定されていない場合は、 session_id() 関数を使用して手動で設定できます。現在のセッション ID を取得する方法は次のとおりです:
$currentSessionID = session_id();
セッション Cookie を特定の ID に設定するには:
session_id($aSessionID);
方法 3: セッション ID を手動で転送する
GET または POST を使用してセッション ID を手動で転送することもできます。メソッド。
スクリプト 1 (HTTP):
session_start(); $currentSessionID = session_id(); $secureServerDomain = 'www.yoursite.com'; $securePagePath = '/safePages/securePage.php'; echo '<a href="https://' . $secureServerDomain . $securePagePath . '?session="' . $currentSessionID . '">Click here to transfer your session to the secure server</a>';
スクリプト 2 (HTTPS):
$currentSessionID = $_GET['session']; session_id($currentSessionID); session_start(); if (!empty($_SESSION['testvariable'])) { echo $_SESSION['testvariable']; } else { echo 'It did not work.'; }
追加考慮事項:
以上がHTTP から HTTPS に切り替えるときにセッション変数を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。