2011-12-29 26 views
2

私はセッションをしたいと思ういくつかのドメインを持っています。 私は次のようなメソッドを作成しました:同じセッション、異なるドメイン、セッションIDを設定

ユーザのログインは中央の場所で行われ、セッションはデータベースに保存されます。

は、ユーザAがabc.comドメインに行きたいとしましょう。私のアプリは彼がログインしているメイン認証ドメインにリダイレクトします。 ログイン後、セッションテーブルのフィールドに保存された認証トークンが生成され、abc.comアプリケーションに戻されます。

私はauth_tokenを使用してデータベースからsession_idを取得し、abc.comのsession_idを同じに設定します。

問題は、それがオールウェイズ新しいセッションを作成することです。

これは私が行方不明です何abc.com

$sessionId = // get from the database using the auth_token. 
/* CLOSE PREVIOUS SESSION */ 
      session_destroy(); 

// sets the new id. 
      session_id($sessionId); 

      /** start new session * */ 
      session_start(); 

の私のコードです?。 私はsymfonyフレームワークでphpを使用しています。 symfonyのセッション処理に関連しているかどうかは分かりません。

+0

は同じサーバー上のドメインですか?ここでは、あなたがしたいことを正確に示す例があるリンクがあります。あなたが正しいことをしているように見えるので、あなたのフレームワークがそれを止める可能性があると言います。 http://www.gonnalearn.com/2008/04/10/sharing-session-data-across-domains-with-php/ – Robert

+0

使用しているsymfonyのバージョンは何ですか? 1 symfony内に2つのドメイン2アプリケーションがインストールされているのですか? – MrGlass

+0

ドメインの1つは、Symfony 1.4と他のSymfony 1.3を実行しています。そして、はい、ドメインは同じサーバーにあります。 – brpaz

答えて

4

私は私の問題を解決しました。 session_destroy()を呼び出した後、古いセッションCookieを削除する必要がありました。誰かが興味を持っている場合

は、ここに私の完全なコードです:助けを

$sessionId = // get session id from the database using the auth_token 
session_destroy(); 

$this->getResponse()->setCookie('mycookie',null,time()-3600); 

session_id($sessionId); 

/** start new session * */ 

session_start(); 

$this->getResponse()->setCookie('mycookie', $sessionId,null,null,'mydomain'); 

みんなありがとう。

関連する問題