我在同一台服务器上有2个域名,但想使用会话变量传递一些数据怎么做?
答案 0 :(得分:2)
您可以这样做:
$name = session_name("name");
session_set_cookie_params(0, '/', 'domain.com');
session_start();
有关详细信息,请参阅session_set_cookie_params
。
答案 1 :(得分:2)
假设您的域名为something.com
和someothersite.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.com
和siteB.example.com
)的单独子域提供服务,只需将它们配置为在example.com
上设置其会话Cookie即可将在两个站点之间共享。