2012-01-29 49 views
0

我试图通过使用session_id函数将会话转移到另一个域。跨域使用session_id传输会话

用户登录@ domainA.com并被重定向到我想要传输会话的domainB.com。

if(isset($_REQUEST["redirect"]) && $_REQUEST["redirect"] != ''){ 
      $url = urldecode($_REQUEST["redirect"]); 
      if(strpos($url, "xxxxx.") === false){ //Means we are redirecting to a custom domain 
       $urlParts = parse_url($url); 
       $url = $urlParts["scheme"] . "://" . $urlParts["host"] . "/login/index/sid:" . session_id() . "?redirect=" . $url;     
      }    
      $this->redirect($url); 
     } 

SiteB.com将接收会话ID,并设置它像这样:

if(isset($this->params["named"]["sid"]) && $this->params["named"]["sid"]){   
      session_id($this->params["named"]["sid"]); 
      $this->redirect($this->params["url"]["redirect"]); 
     } 

我相信,这次会议是到达siteB.com但$ _SESSION保持为空。

我错过了什么?

感谢

+1

这两个域都可以从php.ini访问相同的'session_save_path'吗? – konsolenfreddy 2012-01-29 20:29:28

+0

我已经发现问题:设置会话ID必须在session_start()之前完成,并且必须允许响应刷新才能有效地设置会话。 – 2012-01-29 20:49:07

回答

1

你应该叫SESSION_ID((sess_id $)在session_start前);