人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

●質問者: t_yasu
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:AAA co.jp echo name PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

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

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


公式マニュアル


2 ● gekikawa
●35ポイント

セッション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(); ?>

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

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


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

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

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

◎質問者からの返答

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

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

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

うまく行きました。

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

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

追伸です。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ