22

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

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

http://www.etm124biz.com

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

http://www.etm124annualgala.com

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

支払いコードを変更せずに(たとえば、$ _ 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ページは上記のアドレスセッション変数を探します。

4

3 に答える 3

27

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

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

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

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

共有セッション データ

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

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

于 2013-01-30T18:54:10.870 に答える
2

この質問は、主題を多く探求します。

于 2013-01-30T19:00:04.497 に答える