異なるドメイン間でセッション変数を保持する 質問する

異なるドメイン間でセッション変数を保持する 質問する

これが可能かどうかは分かりません。

私の会社には、クレジットカードやその他の支払い情報を受け付けるメインサイトがあります。また、当社が主催するイベントに直接関連する他のサイトもあります。たとえば、当社のメインサイトは次のようになります。

http://www.etm124biz.com

ただし、毎年恒例のイベント専用の別のサイトがあります。

http://www.etm124annualgala.com

私の「イベント」サイトは登録を処理し、データベースに保存しますが、メイン サイトはクレジットカード処理を処理します。現在の購入はメイン Web サイトで処理され、セッションを使用して支払い/クレジットカード画面にデータが渡されます。

支払いコードを変更することなく(たとえば、$_GET パラメータを受け入れるために)、$_SESSION変数は渡されるべきではないでしょうか?

例:

$_SESSION['s_address1'] = $_POST['address1'];
$_SESSION['s_address2'] = $_POST['address2'];
$_SESSION['s_city']     = $_POST['city'];
$_SESSION['s_state']    = $_POST['state'];
$_SESSION['s_zip']      = $_POST['zip'];

header('Location: https://www.etm124biz.com/payment.php?oid=' . $oid . '&src=conf&id=' . $seq);

私のpayment.phpページでは、上記のアドレス セッション変数を検索します。

ベストアンサー1

クロスドメインセッションID

セッション ID は、デフォルトで Cookie を使用して渡されます。Web サイトが異なるドメインにあるため、セッション Cookie は転送されません。これが、クロスドメイン セッションが機能しない原因の 1 つです。

セッションIDを転送する1つの方法は、すべてのリクエストのクエリ文字列にセッションIDを追加することです(PHPには、これに対する組み込みサポートがある程度あります)。ただし、この方法には多くの欠点があります。最も重要なのは、人々が常にURLをコピー/貼り付けし、有効なセッションIDを明らかにして無効なセッションIDを再利用することになるということです。そのため、推奨されません

はるかに優れたアプローチは、Javascript を使用して、関係するすべてのドメイン (もちろん、これには協力している必要があります) 間でクロスドメイン リクエストを行うことです。この方法では、必要な数のサーバー間でセッション ID をシームレスに転送できます。

共有セッションデータ

クッキーが問題にならない場合でも、すべてのサーバーから共通にアクセスできるストレージにセッション データを保存する必要があります。デフォルトのストレージはローカル ファイル システムなので、クロスドメイン セッションが必要な場合は、これも変更する必要があります。

この問題の簡単な解決策は、カスタムセッションハンドラーデータをデータベースまたはその他のグローバルにアクセス可能なストアに保存します。

おすすめ記事