PHP在不同域名之间传递会话数据

时间:2010-09-24 19:10:36

标签: php session

我在同一台服务器上有2个域名,但想使用会话变量传递一些数据怎么做?

2 个答案:

答案 0 :(得分:2)

您可以这样做:

$name = session_name("name");
session_set_cookie_params(0, '/', 'domain.com');
session_start();

有关详细信息,请参阅session_set_cookie_params

答案 1 :(得分:2)

假设您的域名为something.comsomeothersite.com,那么将两个站点配置为使用相同的目录作为其会话文件(/tmp?),然后只需添加会话站点之间链接的ID:

http://something.com?sessionID=session_id_from_someothersite.com
http://someothersite.com?sessionID=session_id_from_something.com

然后在每次检查该参数时让你的会话处理代码并加载它。

但是,在纯文本URL中传递会话ID是非常不安全的。这就是会话固定攻击变得微不足道的原因。稍微更安全的方法是在每个服务器上使用POST表单“登录”另一个域并将会话ID作为参数传递。或者更好的是,传递加密的一次性使用令牌而不是会话ID。

如果您将它们作为同一父域(siteA.example.comsiteB.example.com)的单独子域提供服务,只需将它们配置为在example.com上设置其会话Cookie即可将在两个站点之间共享。