PHP 異なるドメインでセッションを共有


マルチドメイン(バーチャルドメイン?)を利用したサーバーにて
複数のドメインにてサイトを作っています。
この複数のドメイン間でセッションを引き継ぎたいと考えておりますが、
どのような方法がありますか?
サーバーの仕様上、php.iniの設定変更は不可となっております。

例)
AAA.comで名前をセッションに入れる。
$_SESSION["name"] = "名前";

そのまま「BBB.co.jp」へ移動して名前を出力する
echo $_SESSION["name"];

出来ればズバリでお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:2008/04/12 11:43:14
  • 終了:2008/04/12 16:15:34

回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/04/12 12:07:20

ポイント35pt

セッションIDをURLパラメタ渡しすることで、ドメイン間でのセッション継続が可能です。

php.iniが変更できないということですが、session.use_trans_sidの値によって手順が変わってきます。「セッションIDの引渡し方法」を参考にしてください。


公式マニュアル

id:gekikawa No.2

gekikawa回答回数110ベストアンサー獲得回数112008/04/12 14:04:18

ポイント35pt

セッションIDを引き継ぐことと、session_save_path()でセッションデータを保存する

ディレクトリを共有(双方のドメインからアクセス)可能にすることが必要でしょう。

共有サーバの場合は、デフォルトで/tmpなどにセッションデータが保存される(?)よう

ですが、ハイジャックの可能性が高くなるので、ご自身の管理ディレクトリ内に保存するように

設定することが必要だと思います。

またセッションIDを引き継ぐ場合にクッキーを使うと、通常クッキーはドメイン単位で

管理されるので、うまく引継ぎが行われないと思います。

確実な方法はURLに埋め込む方法ですね。

AAA.comないで次のURLへリンク

http://BBB.com/hogehoge/?<?php echo htmlspecialchars(SID); ?>

こんな感じで埋め込み可能です。

SIDにうまくセッションIDが入らなければ

<? echo session_name().'='.session_id(); ?>

とすれば良いでしょうか?

(半角<では正しく表示されないので全角<になっています。)


別ドメインではありませんが、ポイントサイトなどのリンクで、

メールからこのような方法でセッションを引き継いでいる事例が多くあります。

(セキュリティ的な是非は?です)

id:t_yasu

丁寧なご説明ありがとうございます。

URLにセッションIDを追加する方法は

「<? echo session_name().'='.session_id(); ?>」の方で

うまく行きました。

具体的にはどのタイミングで変数($name)をセッションに入れて

どのように別ドメインにて取り出すのでしょうか?

追伸です。

session_id($_GET['PHPSESSID']);で取得できました。

ありがとうございました。

2008/04/12 16:15:06
  • id:gekikawa
    session_id()では、新たに開始したsession IDが入ってしまうのですね。
    勉強になりました。^^)


    あと$nameの扱いは、書き込みも、読み出しもsession_start();の後で
    行えば問題ないはずです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません