2011-08-04 18 views
1

ログインサブドメインにセッション変数を設定し、ログインに成功した場合は別のサブドメインから応答jsonを設定します。応答したjsonはスクリプトでチェックされ、スクリプトはlocation.href = "new url"になります。リダイレクトされたサイト "new url"では、ユーザーがログインしているかどうかを確認したいが、セッション変数は設定されていない。 location.href = ""はセッションを破壊しますか?この問題を解決するには? session.cookie_domain'.mydomain.com'に設定されます。PHPセッションでのJavaScriptリダイレクトの問題

login.mydomain.com:

$.post('http://api.mydomain.com/index.php', {action: 'login', username: username, password: password}, function(response) { 
      var success = $.parseJSON(response); 
      if(success.success == 'true') { 
       location.replace = 'http://my.mydomain.com'; 
      } 
     }); 

api.mydomain.com:

session_start(); 
$_SESSION['active'] = true; 
header('Access-Control-Allow-Origin: http://login.mydomain.com'); 
echo '{"success": "true"}'; 

my.mydomain.com:助けを

session_start(); 
if(!isset($_SESSION['active']) && !$_SESSION['active']) { 
    header("Location: http://login.mydomain.com"); 
    echo $_SESSION['access_token'].' test'; 
} 
else { 
    echo 'Success!'; 
} 

感謝。

+0

FirefoxでFirebugやHTTPFoxを使用して、ヘッダーの内容を確認できます。通常、セッションが消えるのはセッションクッキーの設定が間違っているためです。新しいページでは、新しい空のセッションが発生します。 –

答えて

1

2番目のコードブロックにsession_start()を呼び出すようではありません。

+0

session_startが呼び出され、コードサンプルに追加されました –

+0

あなたは今いると思います。十分に公正で、やや簡単すぎるように思えました。 – shanethehat

0

あなたは、この問題に寄与するいくつかの問題があるかもしれないと言っているからです。

1)ページがロードされたときにサーバーによってPHP Cookieが設定されます。ページがロードされないためクッキーが設定されていないことを意味します。ページがなくても純粋なJSONを使用している場合、それをブラウザに戻してください。

2)また、PHPセッションは実質的にクッキーであり、クッキーのルールが適用されるので、api.mydomain.comでPHPセッションを設定していて、それがmy.mydomain.com仕事はありません。

あなたは、私はこれがあなたに役立つことを願う複数のサブドメイン上here

をログインデータとセッションを処理する実行可能な解決策を見つけることができます。

+0

あなたが言ったことを確認しましたが、XMLHttpRequestでページを呼び出すとセッションも設定されますが、問題はXMLHttpRequestを介してPHPファイルを呼び出すたびに他のsession_idが取得されることです。 –

+0

「別のsession_id」について詳しく教えてください。セッション情報は保存されていますが、使用されているsession_idが期待どおりに異なることを意味しますか?あなたはあなたの質問で「セッション変数は設定されていません」と言っています – Ryan

+0

私はapi.mydomain.comに次の行を追加しました:echo session_id(); api.mydomain.comが呼び出されるたびに、別のsession_idが返されます。 –

1

私は同じ問題があり、相対URL(location.ref = "index.php")を使用すると、すべてのセッション変数が存在することがわかりました。しかし、絶対URL(location.ref = "http://mydomain.com/index.php")を使用すると、すべてのセッション変数が強制終了されます。