PHP でのセッション管理: HTTP/HTTPS 遷移全体でセッション データを保持する
ユーザーを HTTP ページから HTTPS ページにリダイレクトするとき、セッション変数が失われるという一般的な問題が発生します。これにより、ユーザーに不便が生じ、Web アプリケーションの機能に影響が出る可能性があります。
原因
HTTP と HTTPS は異なるプロトコルを使用し、それらを切り替えると HTTP セッションがID は HTTPS セッションに自動的に転送されません。これにより、新しいセッションが作成されます。
解決策
この問題を解決するには、次の 3 つのアプローチがあります。
1. PHP: session_start
session_start() は、リクエストで渡されたセッション ID に基づいてセッションを初期化するか、現在のセッションを取得します。 HTTP スクリプトと HTTPS スクリプトの両方で session_start() を呼び出すことで、セッション ID を維持できます。
2. PHP: session_id
session_id() を使用すると、セッション ID を手動で設定できます。 session_id() を使用して現在のセッション ID を取得し、それを HTTPS スクリプトに渡してセッション Cookie を設定できます。
3. HTTP サーバー ドメインと HTTPS サーバー ドメインの同期
HTTP サーバー ドメインと HTTPS サーバー ドメインが一致していることを確認します。これにより、プロトコル間を切り替えるときに別のセッションが作成されることがなくなります。たとえば、両方のドメインで「www.example.com」または「example.com」を使用する必要があります。
2 つのスクリプトを使用した例:
HTTP スクリプト:
session_start(); $currentSessionID = session_id(); $_SESSION['testvariable'] = 'It worked';
HTTPSスクリプト:
$currentSessionID = $_GET['session']; session_id($currentSessionID); session_start();
注:
これらのソリューションでは、HTTP サーバーと HTTPS サーバーが同じセッション データ ストレージ基板を使用する必要があります。また、プロトコル間でセッション データを共有する場合は、潜在的なセキュリティ リスクにも注意してください。
以上がHTTP から HTTPS へのリダイレクト中に PHP セッション データを保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。