使用跨域的会话ID传输会话

时间:2012-01-29 18:25:42

标签: php cakephp sessionid

我正在尝试使用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 个答案:

答案 0 :(得分:1)

你应该在session_start();

之前调用session_id($ sess_id)