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保持为空。
我错过了什么?
感谢
这两个域都可以从php.ini访问相同的'session_save_path'吗? – konsolenfreddy 2012-01-29 20:29:28
我已经发现问题:设置会话ID必须在session_start()之前完成,并且必须允许响应刷新才能有效地设置会话。 – 2012-01-29 20:49:07