2011-01-25 87 views
2

我已经使用.htaccess完成了从www.abc.comwww.def.com的重定向。使用htaccess重定向后无法检索PHP会话

重定向是成功的,但我有一个问题,即Cookie和会话只能访问使用def.com访问网站时访问。 从abc.com进行检查时,会话将会丢失。

如何复制或阅读def.com的会话?

请帮帮我。

+0

这很难 - 如果你能解释为什么你做了这个重新定向,为什么你需要访问会话数据,我们或许能找到一个替代方案,如果没有下面的答案适合。 – 2011-01-25 10:50:35

回答

0

好吧,你不能简单地做到这一点。也许看到this post

0

包含会话ID(因此,您的整个会话)的cookie只在创建它的域上有效。因此,当您更改域名时,Cookie不再可用。要解决此问题,您可以将会话ID发送到新域(这不是很安全,但您可能不在乎),然后为该域创建新的cookie和会话。

0

这被称为“跨站点脚本”(XSS),很多人都非常努力地工作,以确保你想要的是不可能的。如果您确实找到了解决办法,请务必告诉我们,因为那将是一次重大的安全漏洞。

+1

-1这不叫做跨站脚本。 – Gumbo 2011-01-25 09:55:16

0

当您可以从两台服务器访问会话数据存储时,只能在两个域上共享相同的会话。根据session data storage type and location,您可能需要编写您的own session storage handler

除此之外,还需要确保两个域都使用相同的会话ID。如果您想使用Cookie作为会话ID,则只能在域名共享公用超级域名时使用,因此它们是域名的子域名,例如foo.example.combar.example。 com分享超级域名example.com。在这种情况下,您需要adjust the session cookie parameterdomain并将其设置为值为.example.com超级域example.com

否则,就像您的示例中,域名仅作为顶级超级域名共享com,您不能使用cookie(首先)。但是,您可以使用URL将会话ID从一个域传输到另一个域。要做到这一点,您需要启用session.use_trans_sid并禁用session.use_only_cookies(至少在重定向目标域上),并将会话ID附加到从一个域指向另一个域的每个URL(这里您可以使用SID常量)。